csdn沒有在移動上布網,最近移動校園網登不上csdn,今天終於能登上了,小草鳥就寫下最近在學的設計模式。
工廠估計也差不多是用的最多的了,對於工廠方法和抽象工廠比較容易混,筆者在這裡說下自己的學習的一些理解。
工廠模式:
產品對於工廠,當然是生產產品的了,當然我們得有產品類,為了擴充套件性良好,先定義乙個產品介面
public inte***ce animal
有了產品介面,接下來當然是產品了
產品:貓
public class cat implements animal
}
產品:雞
public class chicken implements animal
}
產品:豬
public class pig implements animal
}
工廠哈哈,我們的產品都有了,下面我們不能把他們都放在**,當然得生產他們了
下面先定義乙個工廠介面,這只是為了擴充套件性良好哦
public inte***ce produce
工廠介面都有了,我們當然得有具體的工廠生產這些廠品了
工廠:貓
public class factory_cat implements produce
}
工廠:雞
public class factory_chicken implements produce
}
工廠:豬
public class factory_pig implements produce
}
哈哈,工廠有了,產品也有了,並且工廠也生產了需要的產品。接下來就是我們要的測試了
public class test
public static void main(string args)
}
寫到這裡,大家不免會發現一些問題,這裡只能生產動物,但是我想生產豬肉,雞肉,這樣的該怎麼呢?
bing go!一些人也許會說我可以在建乙個肉介面生產肉啊,這樣當然能解決問題,只是增加了另乙個工廠方法,
但是要是有很多類似的種類需要生產呢?我們會有好多好多的工廠,我們也許會暈頭轉向吧,哈哈,解決的辦法來了,
就是我們的抽象工廠來啦。
新產品介面
public inte***ce meat
新產品產品:**
public class cat_meat implements meat
}
產品:雞肉
public class chicken_meat implements meat
}
產品:豬肉
public class pig_meat implements meat
}
抽象工廠介面
public inte***ce create
工廠:貓和**
public class factory_cat_meat implements create
public animal produceanimal()
}
工廠:雞和雞肉
public class factory_chicken_meat implements create
public animal produceanimal()
}
工廠:豬和豬肉
public class factory_pig_meat implements create
public animal produceanimal()
}
現在的抽象工廠基本結束,從上面可以看出工廠方法和抽象工廠的區別就是一次性生產的東西多了點,這不能說明什麼,也看不出有什麼好處
下面我就簡單的說個小例子說明他們之間的區別:
工廠方法模式:工廠方法模式可以對新產品進行有效的擴充套件,比如我們再生產豬耳朵,我們可以輕鬆的定義介面生產新的產品,
抽象工廠模式:抽象工廠模式可以對產品系列進行有效的擴充套件,對新產品的生產擴充套件就比較麻煩,因為我們需要修改頂層的介面裡的內容,許多人可能說
這沒什麼,我都經常這麼做,但是如果我們的頂層介面的實現類很龐大的話,這樣做是很危險的,我們需要修改很多的類來適應頂層介面的改變,
對系列產品的擴充套件的好處怎麼體現呢?
這就是說我們生產普通豬和豬肉,這作為乙個系列,公司突然引進了黑豬和黑豬肉,不要慌張,我們可以很輕鬆的繼承頂層的抽象介面,我們只需要寫乙個
普通的類,實現介面就可以了。
說到這裡,他們到底該怎麼用呢?我想對於公司的產品變動不是特別大,產品結構複雜性比較大的情況下,比較適合抽象工廠,而對於產品變動大,產品的
複雜性比較低的話,比較適合工廠方法來擴充套件產品。一般情況我們還可以用組合工廠來處理,這就比較複雜的情況了。
抽象工廠和工廠方法
工廠方法模式 乙個抽象產品類,可以派生出多個具體產品類。乙個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類只能建立乙個具體產品類的例項。抽象工廠模式 多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。乙個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類可以建立多個具體產品類的例項。區...
簡單工廠方法,工廠方法,抽象工廠方法
以大話設計模式計算器為例 簡單工廠方法是由具體執行功能類,工廠類,客戶端構成,工廠類有case語句,負責建立不同的類,客戶端呼叫工廠類裡面的工廠方法,工廠類的工廠方法根據客戶端傳進去的引數new相應的類的物件返回給客戶端,客戶端得到返回的物件用該物件初始化該物件的成員變數最後呼叫該物件的方法執行計算...
設計模式 抽象工廠方法和工廠方法
工廠方法模式定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。抽象工廠模式提供乙個介面,用於建立相關或依賴物件的家族,而不需要明確指定具體類。從pizzastore的角度,來理解上面的這個類圖 抽象工廠的任務是,定義乙個建立一組產品的介面。這個介面內的每個方...