設計模式 工廠方法模式

2021-09-25 15:04:43 字數 1473 閱讀 1293

工廠方法模式(別名:虛擬構造):定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。 factory method使乙個類的例項化延遲到其子類。

工廠方法模式屬於建立型模式,結構中包括抽象產品、具體產品、構造者和具體構造者四種角色

問題:使用者希望自己的原子筆能使用不同顏色的筆芯

1:抽象產品

得到乙個類的子類的例項最常見的方法就是使用new運算子和該子類的構造方法,但是在某些情況下,使用者可能不應該或無法使用這種方法來得到乙個子類的例項,其原因是系統不允許使用者**和該類的子類形成耦合或者使用者不知道該類有哪些子類可以使用。

工廠方法模式的關鍵是在乙個介面或抽象類中定義乙個抽象方法,該方法返回某個類的子類的例項

//抽象產品

//筆芯--該類的子類可以提供相應顏色的筆芯

public abstract class pencore

2:具體產品(這裡只寫乙個)

//紅色的筆芯

public class redpencore extends pencore

public void writeword(string s)

}

public class bluepencore extends pencore

public void writeword(string s)

}

3:構造者

//構造者

//負責定義乙個被稱為工廠方法的抽象方法,該方法要求返回具體產品類的例項

public abstract class pencorecreator

4:具體構造者(只寫二個)

//該方法返回具體產品的例項

public class redcorecreator extends pencorecreator

public class bluecorecreator extends pencorecreator

}

5:使用者只需要知道抽象產品有哪些方法就行,不用知道有哪些具體產品

原子筆使用工廠方法得到筆芯

//原子筆

public class ballpen

public void write(string s)

}

6:主函式

public static void main(string args)}

工廠方法模式的優點:

(1)使用工廠方法可以讓使用者的**和某個特定類的子類的**解耦。

(2)工廠方法使使用者不必知道它所使用的物件是怎樣被建立的,只需知道該物件有哪些方法即可。

適合使用工廠方法模式的情景如下:

(1)使用者需要乙個類的子類的例項,但不希望該類的子類形成耦合。

(2)使用者需要乙個類的子類的例項,但使用者不知道該類有哪些子類可用。

設計模式 工廠方法模式

一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...

設計模式 工廠方法模式

1 factorymethod.h ifndef factorymethod h define factorymethod h include include using namespace std class osproduct 產品,product,產品的抽象類 class windowspro...

設計模式 工廠方法模式

框架的基礎知識 對框架的理解 框架和設計模式的關係 工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使乙個類的例項化延遲到其子類。結構 產品 public inte ce product 具體產品 public class productimpl...