java設計模式連載(2) --抽象原廠模式
意圖:
提供一個建立一系列相關或相互依賴對象的介面,而無需指定它們具體的類。
適用性:
- 一個系統要獨立於它的產品的建立、組合和表示時。
- 一個系統要由多個產品系列中的一個來配置時。
- 當你要強調一系列相關的產品對象的設計以便進行聯合使用時。
- 當你提供一個產品類庫,而只想顯示它們的介面而不是實現時。
執行個體:
1. 抽象電腦器件工廠介面
package Abstract_Factory_Pattern;public interface ComputerFactory {public CPU createCpu();public Displayer createDisplayer(); }
2. 實現上面的介面 具體的生產新,舊器件工廠
package Abstract_Factory_Pattern;public class NewComputerFactory implements ComputerFactory{@Overridepublic CPU createCpu() {return new NewCup();}@Overridepublic Displayer createDisplayer() {return new NewDisplayer();}}
package Abstract_Factory_Pattern;public class OldComputerFactory implements ComputerFactory{@Overridepublic CPU createCpu() { return new OldCpu();}@Overridepublic Displayer createDisplayer() { return new OldDisplayer();} }
3. 定義一個CPU介面,一個顯示器介面
package Abstract_Factory_Pattern;public interface CPU { public void price();}
package Abstract_Factory_Pattern;public interface Displayer { //顯示器介面 public void price(); }
4. 實現上面兩個介面
package Abstract_Factory_Pattern;public class NewCup implements CPU{@Overridepublic void price(){ System.out.println("新CPU 貴");}}
package Abstract_Factory_Pattern;public class OldCpu implements CPU{@Overridepublic void price() {System.out.println("舊的CPU 便宜");}}
package Abstract_Factory_Pattern;public class NewDisplayer implements Displayer{@Overridepublic void price(){ System.out.println("新的顯示器 貴!");}}
package Abstract_Factory_Pattern;public class OldDisplayer implements Displayer{@Overridepublic void price(){ System.out.println("舊的顯示器 便宜");}}
5. 測試這個模式
package Abstract_Factory_Pattern;public class Client {public static void main(String[] args){ComputerFactory computerFactory = new NewComputerFactory(); computerFactory.createCpu().price(); //新式電腦期間的廠生產出貴的computerFactory.createDisplayer().price();computerFactory = new OldComputerFactory();computerFactory.createCpu().price(); //老式電腦期間的廠生產出便宜的computerFactory.createDisplayer().price();}}
6 . 多謝瀏覽,歡迎斧正。