1. 程式人生 > >Java面向物件設計模式(一)——工廠方法模式

Java面向物件設計模式(一)——工廠方法模式

工廠方法模式(Factory Method)

工廠方法模式分為三種:

1、普通工廠模式,就是建立一個工廠類,對實現了同一介面的一些類進行例項的建立。首先看下關係圖:


舉例如下:(我們舉一個傳送郵件和簡訊的例子)

首先,建立二者的共同介面:

  1. publicinterface Sender {  
  2.     publicvoid Send();  
  3. }  

其次,建立實現類:

  1. publicclass MailSender implements Sender {  
  2.     @Override
  3.     publicvoid Send() {  
  4.         System.out.println("this is mailsender!"
    );  
  5.     }  
  6. }  
  1. publicclass SmsSender implements Sender {  
  2.     @Override
  3.     publicvoid Send() {  
  4.         System.out.println("this is sms sender!");  
  5.     }  
  6. }  

最後,建工廠類:

  1. publicclass SendFactory {  
  2.     public Sender produce(String type) {  
  3.         if ("mail".equals(type)) {  
  4.             returnnew MailSender();  
  5.         } elseif ("sms".equals(type)) {  
  6.             returnnew SmsSender();  
  7.         } else {  
  8.             System.out.println("請輸入正確的型別!");  
  9.             returnnull;  
  10.         }  
  11.     }  
  12. }  

我們來測試下:

  1. publicclass FactoryTest {  
  2.     publicstaticvoid main(String[] args) {  
  3.         SendFactory factory = new
     SendFactory();  
  4.         Sender sender = factory.produce("sms");  
  5.         sender.Send();  
  6.     }  
  7. }  

輸出:this is sms sender!

22、多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。關係圖:


將上面的程式碼做下修改,改動下SendFactory類就行,如下:

[java] view plaincopypublicclass SendFactory {   public Sender produceMail(){  
  1.         returnnew MailSender();  
  2.     }  
  3.     public Sender produceSms(){  
  4.         returnnew SmsSender();  
  5.     }  
  6. }  

測試類如下:

  1. publicclass FactoryTest {  
  2.     publicstaticvoid main(String[] args) {  
  3.         SendFactory factory = new SendFactory();  
  4.         Sender sender = factory.produceMail();  
  5.         sender.Send();  
  6.     }  
  7. }  

輸出:this is mailsender!

33、靜態工廠方法模式,將上面的多個工廠方法模式裡的方法置為靜態的,不需要建立例項,直接呼叫即可。

  1. publicclass SendFactory {  
  2.     publicstatic Sender produceMail(){  
  3.         returnnew MailSender();  
  4.     }  
  5.     publicstatic Sender produceSms(){  
  6.         returnnew SmsSender();  
  7.     }  
  8. }  
  1. publicclass FactoryTest {  
  2.     publicstaticvoid main(String[] args) {      
  3.         Sender sender = SendFactory.produceMail();  
  4.         sender.Send();  
  5.     }  
  6. }  

輸出:this is mailsender!

總體來說,工廠模式適合:凡是出現了大量的產品需要建立,並且具有共同的介面時,可以通過工廠方法模式進行建立。在以上的三種模式中,第一種如果傳入的字串有誤,不能正確建立物件,第三種相對於第二種,不需要例項化工廠類,所以,大多數情況下,我們會選用第三種——靜態工廠方法模式。

相關推薦

Java面向物件設計模式——工廠方法模式

工廠方法模式(Factory Method) 工廠方法模式分為三種: 1、普通工廠模式,就是建立一個工廠類,對實現了同一介面的一些類進行例項的建立。首先看下關係圖: 舉例如下:(我們舉一個傳送郵件和簡訊的例子) 首先,建立二者的共同介面: publici

java設計模式---工廠方法模式

基本上有興趣瞭解設計模式的都會知道工廠模式,因為各種模式相關的書籍以及部落格什麼的都是以工廠模式開頭的,對於一時興起或者三天熱度的都是會看到工廠模式,但是工廠模式也是用到比較廣泛的模式,屬於建立型模式。工廠模式分為工廠方法模式和抽象工廠模式,這篇主要總結一下工廠

Objective-C常用設計模式--工廠方法模式

工廠方法模式:定義建立物件的介面,讓子類決定例項化哪一個類。工廠方法使得一個類的例項化延遲到其子類。幾乎所有面向物件語言寫的應用程式都能看到工廠方法。“專門定義一個類來負責建立其他類的例項,被建立的例項通常具有共同的父類。”工廠方法模式使用場景:編譯時無法準確預期要建立的物件

java23種設計模式工廠方法模式

在說工廠方法模式之前,先了解一下簡單工廠模式。工廠方法模式其實是在簡單工廠上面做了一些增強。 簡單工廠模式:有一個專門的類來生產其他類的例項,生產的這些例項有一個共同父類。這個跟我們的多型有一點像。 例子: 假如我們有一個滑鼠工廠,這個工廠既可以生產聯想滑鼠,又可以生產巨集碁滑鼠。 程式碼如下: 1、滑鼠工廠

Java面向物件程式設計思想

宣告:學基礎,在校學生,本文所有內容來自純書本,然後通過自己的理解和參考編寫而來,如有說的不對的地方,歡迎評論指錯!(僅做學習交流) 類和物件的建立 類的建立:(public private protected)+ class + 類名 { <類

JAVA面向物件學習筆記

1、方法: 1)方法不能獨立定義,方法只能在類體裡定義; 2)從邏輯意義上看,方法要麼屬於該類本身,要麼屬於該類的一個物件; 3)永遠不能獨立執行方法,只想方法必須使用類或物件作為呼叫者; 4)static修飾的方法不能訪

面向物件設計原則——單一職責原則

單一職責原則定義(Single Responsibility Principle,SRP) 一個物件應該只包含 單一的職責,並且該職責被完整地封裝在一個類中。 Every  Object should have  a single responsibility, an

設計模式---工廠方法模式

ack cto sys alt 修改 spa 抽象類 .com desc 1、簡介:工廠方法模式是類的創建模式,又叫虛擬構造子模式或是多態性工廠模式,它的實現方式是創建一個工廠接口,將實際創建對象的的工作轉移到工廠子類中,在系統的擴展中,可以在不修改工廠角色的情況下引進新的

常用軟體設計模式工廠方法模式

工廠方法模式:定義一個用於建立物件的介面,讓其子類決定例項化哪一個工廠類,工廠模式使其建立過程延遲到子類進行。 優點:1、一個呼叫者想建立一個物件,只要知道其名稱就可以了           

設計模式工廠方法模式

想想我們之前的簡單工廠模式,是這樣的: 結構圖: 工廠類: class OperationFactory{ public static Operation createOperate(string operate){ Operation

Java設計模式工廠模式

目錄 1、工廠模式簡介 2、工廠模式分類 2.1 簡單工廠模式 2.2 工廠方法模式 2.3 抽象工廠模式 1、工廠模式簡介 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之

java設計模式建立型模式之 單例模式餓漢式,懶漢式,執行緒安全,雙重檢查

1.介紹     單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許一個例項存在。  2.實現思路與步驟   1).將該類的構造方法定義為私有方法,這樣其他處的程式碼就無法通過呼叫該類的構造方法來例項化該類的物件,只有通過該類提供的靜態

設計模式觀察者模式

針對 ray 需求 als bool 模式 null rri 主動 觀察者模式 定義了對象之間的一對多的依賴,這樣一來,當一個對象狀態改變時,他的 多有依賴都會受到通知並自動更新。 本例為一個溫度基站,和三個終端。溫度基站為廣播類WeatherData,三個終端監聽者類分別

android深入之設計模式托付模式

-h listen back != new 聚合 string static data- (一)托付模式簡單介紹 托付模式是主要的設計模式之中的一個。托付。即是讓還有一個對象幫你做事情。 更多的模式,如狀態模式、策略模式、訪問者模式本質上是在更特殊的場合採用了托

設計模式工廠模式

inside 類和對象 ace square 種類型 創建 實體類 需要 服務器 工廠模式 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。 在工廠模式中,我們在創建對象時不會

設計模式單例模式

分享 公有 交互 線程 加鎖 解決 操作 編譯 進入 1.單例模式(Singleton):由於某種需要,要保證一個類在程序的生命周期中只有一個實例,並提供一個該實例的全局訪問方法。 2.單例模式(Singleton)結構圖: Singleton類,定義了一個GetInst

設計模式建造者模式

單實例 抽象類 原型 sys 數組 組合 cto 簡單 builder GOF論述了23種設計模式,它們有3個分類————創建型模式、結構型模式、行為模式。此篇為創建型模式創建型模式抽象了實例化的過程,它們可以幫助某個系統獨立於如何創建、組合以及表示該系統所包含的對象。當系

跟著別人學設計模式-----單例模式詳解

    作者:zuoxiaolong8810(左瀟龍),轉載自:http://www.cnblogs.com/zuoxiaolong/p/pattern2.html             上一章

常用的軟體設計模式單例模式

單例模式:即一個類只有一個例項,在類裡自己建立自己的例項。 優點: (1)單例模式會阻止其他物件例項化其自己的單例物件的副本,從而確保所有物件都訪問唯一例項。 (2)因為類控制了例項化過程,所以類可以靈活更改例項化過程。尤其是在C++中,每次new都要delete,而是用單例模式可以避免