1. 程式人生 > >【JAVA】基礎:設計模式(單例設計模式,工廠設計模式)

【JAVA】基礎:設計模式(單例設計模式,工廠設計模式)

設計模式:解決某一類問題最行之有效的方法。
java中有23種設計模式。
建立型模式(5種):工廠方法模式,抽象工廠模式,單例模式,建造者模式,原型模式。
結構型模式(7種):介面卡模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。
行為型模式(11種):策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。

單例模式:
Singleton模式主要作用是保證在Java應用程式中,一個類Class只有一個例項存在。
一般Singleton模式通常有幾種形式:
第一種形式: 定義一個類,它的建構函式為private的,它有一個static的private的該類變數,在類初始化時例項話,通過一個public的getInstance方法獲取對它的引用,繼而呼叫其中的方法。

public class Singleton {
private Singleton(){}
      //在自己內部定義自己一個例項,是不是很奇怪?
      //注意這是private 只供內部呼叫
      private static Singleton instance = new Singleton();
      //這裡提供了一個供外部訪問本class的靜態方法,可以直接訪問  
      public static Singleton getInstance() {
        return instance;   
      } 
    } 

第二種形式:

public class Singleton { 
  private static Singleton instance = null;
  public static synchronized Singleton getInstance() {
  //這個方法比上面有所改進,不用每次都進行生成物件,只是第一次     
  //使用時生成例項,提高了效率!
  if (instance==null)
    instance=new Singleton();
return instance;   } 
} 

其他形式:
定義一個類,它的建構函式為private的,所有方法為static的。
一般認為第一種形式要更加安全些

工廠模式:
工廠模式的原型就是現實當中的工廠生產模式,簡單來說就是我想要一部車,我們不自己建立車,我找工廠幫我生產,對於我來說,我只需要找到工廠,呼叫工廠生產車的方法,就可以拿到一部車的物件 。是用於生產單個產品。

抽象工廠模式:

抽象工廠解決的是產品系列的問題,如汽車生產還需要輪胎,就要輪胎廠造輪胎,對用使用者只關心找那個工廠,而不用關心物件的生產過程。