JAVA常用設計模式總結(單例,工廠,抽象工廠)

來源:互聯網
上載者:User

設計模式常常被分為以下三類:

建立型

建立對象時,不再由我們直接執行個體化對象;而是根據特定情境,由程式來確定建立對象的方式。如,Factory 方法、抽象原廠模式、單例模式等。

構造型 用於協助將多個對象組織成更大的結構。如,適配器模式、橋接模式、組合器模式等。

行為型 用於協助系統間對象的通訊,以及如何控制複雜系統中的流程。如,命令模式、解譯器模式、迭代器模式等。

一、單例模式

public class Singleton { public static Singleton instance; private Singleton() { } public static Singleton getInstance() {  if (instance == null) {   instance = new Singleton();  }  return instance; } public static void main(String[] args) {  Singleton instance1 = Singleton.getInstance();  Singleton instance2 = Singleton.getInstance();  System.out.println(instance1 == instance2); }}

(Spring中只需在配置實體Bean中指定 scope="singleton",便可實現單例)

二、簡單工廠

當A執行個體需要調用B執行個體的方法時,不是通過new B執行個體,而是通過一個能建立B執行個體的工廠BFactory來實現。

B b=new B();---à B b=BFactory().getB();

略為改進後變為:

當A執行個體需要調用某種方法時,這種方法可以由B執行個體或B1執行個體實現。那麼我們定義一個介面IB,讓B和B1實現該介面。並且寫一個IB工廠IBFactory,提供一個getIB()方法

public class A{private IB ib;public A(IB ib){this.ib=ib;}public void showMessage(){ib.print();}}public interface IB{public abstract void print();} public class B implements IB{public void print(){}} public clsss B1 implements IB{public void print(){}} public IBFactory{public IB getIB(){return new B();}} --------------------------IB ib=IBFactory.getIB();A a=new A(ib);a.showMessage();----------------------------

 

抽象原廠模式圖:

三、Factory 方法和抽象工廠

在簡單原廠模式裡,系統使用ProductFactory工廠類生產所有產品執行個體,且工廠類來決定生產那個類的執行個體。

3.1 Factory 方法 在Factory 方法中,如果我們不想在工廠類中進行邏輯判斷,程式可以為不同產品類提供不同的工廠,不同的工廠類生產不同的產品。

採用Factory 方法後,用戶端代碼成功與被調用對象的實作類別分離。

3.2 抽象原廠模式:為瞭解決用戶端代碼與不同工廠耦合的問題,接著考慮再增加一個工廠類,該類生產OutputFactory執行個體(根據傳入的參數,生產不同的工廠執行個體)

public class OutputFactoryFactory {public static OutputFactory getOutputFactory(String type) {if ("better".equalsIgnoreCase(type)) {return new BetterOutputFactory();} else {return new OutputFactory();}}}

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.