我正在從頭第一本書學習設計模式,我理解他們中的大多數。但是當我嘗試在現實世界中應用時,它變得更加困難。在每個例子中,它創建了很多子類。但是,我們是否真的在實時項目中創建了這麼多課程?在現實世界中的設計模式
E.g.考慮 方法1銀行賬戶的例子:
Account {
String name;
double balance;
operation1() {
}
}
SavingAccount extends Account {
// some extra fields and methods related to saving account
operation1() {
}
}
CurrentAccount extends Account {
// Some extra fields and methods related to current account.
operation1() {
}
}
當我使用使用繼承策略的一個休眠,例如地圖這些類與數據庫,每個子類的表,我將結束三個表。帳戶,Saving_account和Current_account。 優點:我可以根據使用多態的對象類型調用operation1()。
缺點:更多的表格和類別。如果項目更加複雜和龐大,最終將會有數千個課程。
方法2:
Account {
string name;
double balance;
string type;
operation1() {
}
}
我只需要1臺這種方法稱爲帳戶。而「類型」字段將標識帳戶的類型。
優點:只有1個表和類。 缺點:我將失去面向對象的世界和每個我必須把條件放在下面的地方。
if (type == saving) {
// do this;
} else if (type == current) {
// do that;
}
根據理論,方法1是正確和最好的。但是目前在我的項目中,使用了方法2。我的項目不是銀行業務。我把它作爲簡單的例子。
我知道這是非常基本的問題。但由於我目前的項目實施,我無法阻止自己問這個問題。
編輯:的方法1可維護性比方法更更好,因爲你剛纔提到的,你解釋的利弊也有效2.
你在描述什麼設計模式? – 2014-08-28 03:05:42
我只是談論類的一般面向對象設計 – javafan 2014-08-28 03:43:55