2013-08-28 49 views
0

目前,我正在開發針對幼兒園,小學和高中定製的C#「學校系統項目」。爲此,我創建了三個不同的項目,它們具有與自定義功能類似的類。項目設計模式問題

的問題是,每次我的時間來修改類(主要是由於bug和新功能),我需要對三個項目更新這些類似的類。現在

,我來到了我的感官,得知我的設計模式應該是比這更好的。我的類型的項目的行業標準是什麼,他們與定製功能共享類似的類別?我應該考慮創建所有可以使用的庫類,或者有更好的選擇嗎?

+0

爲幼兒園,小學和高中創建一個基礎圖書館? –

+0

你能確定你需要做的一切嗎? - 你想工業化你的代碼文件方面 - 您的業務功能 - 有三個項目 你的問題太不精確 – tdelepine

回答

1

創建一個庫,定義一個基類具有共同屬性和功能的學校。

public abstract class School 
{ 
    public string Name { get; set; } // common property for each school 

    public int GetStudentCount() // common method for each school 
    { 
    } 
} 

然後爲每所學校定義孩子班級,並指定其他學校沒有的行爲。

public class Elementary : School 
{ 
    public string SomethingSpecial { get; set; } 
} 

您還可以使用抽象和虛擬方法和屬性來定義應該或可以被重寫的基本行爲。

這樣,你將有隻有一個庫定義的域對象(只需你使用的所有實體,如學校,學生,教師等)和療法的行爲。無論什麼時候你必須改變一些東西,你只需要在這個單一的庫上進行操作。

您還可以檢查一些設計模式,如遊客和工廠方法,讓你的新架構設計是明顯的。

+0

感謝校正亞歷克斯創建一個解決方案文件。 –

0

我會看看抽象的Fatory模式。

你可以看到例如它here

0

當您嘗試修改您的課程時,會引發錯誤。所以你必須在你的課堂設計中實施SOLID原則。特別單一責任,開放/關閉,界面隔離和依賴倒置/ IOC。 您可以閱讀以下文章瞭解SOLID原則(如果你沒有對足夠紮實的想法) http://www.codeproject.com/Articles/93369/How-I-explained-OOD-to-my-wife

然後介紹工作模式庫和單位的數據訪問 http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

在業務邏輯您將使用基於你的邏輯一樣多相同的邏輯,你可以使用工廠方法模式的模式,必須適應多個類,您可以使用適配器類,用於發送任何通知,你可以使用觀察者模式等

1

兩個基本的設計模式用於處理微小的變化固定結構是

模板方法戰略

他們只是在不同的技術水平,但有着共同的原則 - 分享一切可能共享,並只有在發生分歧有所不同。

+0

+1點。這兩種模式非常適合這種情況。 – MattDavey

0

因爲你說某些類在三個項目中很常見,而你在這三個項目中單獨使用它們。現在,無論何時您想對這些普通課程進行更改,您都需要對所有這三個項目進行更改。它的確要求遵循設計原則(OO原則)。

「封裝什麼變化」這三個項目之外

提取所有那些通用類,讓他們在一個類或單個項目,如果有多個類,就像一個實用工具項目。然後在所有三個項目之間共享這個實用項目。

現在當有任何新功能需要添加或bug修復的普通類。它的一個地方發生了變化。