看了大話設計模式,於是記錄一下。
簡單工廠:
通過封裝,繼承,復用一些**,便於修改。可重用,但是違背了開放-封閉原則。
於是出現了
工廠方法模式:
定義:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法使乙個類的例項化延遲到了其子類。
首先定義個雷鋒類
public class leifeng
public void wash()
}
再定義乙個學雷鋒的大學生類
public class tegraduae extends leifeng
main 測試
leifeng xueleifeng = new tegraduae();
xueleifeng. sweep();
如果需要多個學雷鋒,再不斷的new多個物件嗎?
這裡顯然就不能這麼寫。
用簡單工廠重新寫。
來個社群自願者類
public class volunteer extends leifeng
再寫簡單工廠類:
public class ******facatory
return result;
}}
main 測試
這樣就不用總是在new 物件。
leifeng s = ******facatory.createleifeng("xueleifeng");
s.wash();
leifeng s2 = ******facatory.createleifeng("volun");
s2.sweep();
只需要傳入不同的字串。即可。但是也要補停的傳入字串去構造不同的物件。
再用工廠方法重新來一遍:
雷鋒工廠:
public inte***ce ifacatory
學雷鋒大學生工廠
public class graduate implements ifacatory
}
自願者工廠
public class volunteerf implements ifacatory
}
main 測試
ifacatory facatory = new volunteerf(); //1
leifeng f = facatory.createleifeng();
f.sweep();
f.wash();
這裡如果想改變成大學生學雷鋒
只要在 1這重新改變即可。想比簡單工廠用到了多型。
這是一進步。
工廠方法借助了抽象的介面,讓子類的實現都去實現同一介面,這樣子類的剩下的**,變得重用了,這樣導致**的工作量減少。同時,如果想增加乙個新類,只要實現同樣的介面,再在main測試下,稍微修改**即可,而不用像簡單工廠需要再switch中動**。
設計模式 簡單工廠 工廠方法 抽象工廠方法模式
簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...
設計模式 工廠方法
設計模式 工廠方法 工廠方法與抽象方法 面向介面程式設計可以提高 的靈活性 可以橫向擴充 切忌不能使用面向實現的程式設計,這樣做不便於以後業務的擴充和 的靈活性。工廠方法 就是把 new class 的過程交給 factory來做.構造類的細節不需要我們知道。比如 構造乙個 list 我們可以這樣寫...
設計模式 工廠方法
簡單工廠針對擴充套件時需要修改 違反了ocp 開閉原則 而工廠方法模式在擴充套件時,更滿足ocp。當然比較簡單工廠模式,工廠方法模式有一組實現了相同介面的工廠類,而簡單工廠模式就只有乙個工廠類。和簡單工廠方法一樣,還是以生成汽車為例子。定義要生成的物件的公共介面 public inte ce car...