java設計模式連載(2) –抽象原廠模式

來源:互聯網
上載者:User

       

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 . 多謝瀏覽,歡迎斧正。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.