設計模式之簡單工廠模式 工廠方法模式

2021-08-03 10:06:52 字數 3546 閱讀 6507

簡單工廠模式並不屬於gof23個經典設計模式,但通常作為23個設計模式的基礎。因為在簡單工廠模式中用於建立例項的方法是static方法,所以它也被稱為static factory method pattern.

定義

定義乙個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。

uml類圖

在簡單工廠模式中,客戶端不用通過new建立物件,只需要通過工廠類就可以建立乙個產品類的例項。

使用簡單工廠模式時,首先要對產品類進行重構,要根據實際情況設計乙個產品層次結構,將所有產品類的公共**移至抽象產品類,並宣告一些抽象方法,以供不同的具體產品類來實現。

public

abstract

class

product

//宣告抽象業務方法

public

abstract

void

methoddiff();

}

然後是具體產品的實現,繼承抽象產品方法,實現自己內部業務邏輯

public

class

concreteproducta

extends

product

}

建立簡單工廠模式的核心工廠類,工廠類提供乙個靜態工廠方法供客戶端使用,根據傳入引數的不同建立不同的產品物件,典型**:

public

class

factory else

if (arg.equalsignorecase("b"))

return product;}}

客戶端呼叫**如下

public

class

client

}

簡單工廠模式很簡單,但是存在問題。當系統中需要引入新的產品時,必定要修改工廠類的源**,違背「開閉原則」。而且在簡單工廠模式中,所有的產品都由同乙個工廠建立,工廠職責較重,業務邏輯也會變得複雜,concreteproduct和factory的耦合度較高。

在工廠方法模式中,針對不同的產品提供不同的工廠,系統提供乙個與產品等級結構對應的工廠等級結構。

定義

定義乙個抽象工廠介面來宣告抽象工廠方法,而由其子類來實現具體工廠方法。

使用場景

在任何需要生成複雜物件的地方,都可以使用工廠方法模式。

用new就可以完成建立的物件無需使用工廠模式

uml類圖

工廠方法模式通用**

/**

* 抽象產品類

* 抽象工廠可以是乙個介面,也可以是乙個抽象類

*/public

abstract

class

product

/**

* 具體產品a

*/public

class

concreteproducta

extends

product

}/**

* 具體產品b

*/public

class

concreteproductb

extends

product

}

接下來定義抽象工廠

/**

* 抽象工廠類

*/public

abstract

class

factory

定義乙個產品a的具體工廠

/**

* 產品a的具體工廠

*/public

class

concretefactorya

extends

factory

}

客戶端測試**

public

class

client

}

反射反射的方式可以更簡潔的生產具體產品物件,只要在工廠方法的引數列表中傳入乙個class類來決定是哪乙個產品類。

具體**如下:

public

abstract

class

factory

具體工廠類:

public

class

concretefactory

extends

factory catch (exception e)

return (t) product;}}

客戶端呼叫**:

public

class

client

}

使用工廠方法模式設計乙個程式來讀取各種不同型別的格式,針對每一種格式都設計乙個讀取器,如gif讀取器用於讀取gif格式的、jpg讀取器用於讀取jpg格式的。需充分考慮系統的靈活性和可擴充套件性。

}抽象工廠類:

public

abstract

class

reade***ctory

public

class

picreade***ctory

extends

reade***ctory catch (exception e)

return (t) reader;}}

客戶端呼叫**:

public

class

client

}

執行結果:

原始碼

設計模式之簡單工廠,工廠方法模式

qt暫時斷了,專案上暫時不用。這段時間回顧以前寫的 不忍直視,現在的也好不 去,索性看看設計模式吧,就當練內功了 啦啦。廢話不說上 c 設計乙個簡單的計算器,只實現加減,其他的暫不考慮,namespace my factory private double dnumbera 0 private do...

工廠設計模式之簡單工廠 工廠方法

1 工廠設計模式的作用 將建立者和呼叫者進行分離 我們經常是建立物件之後再呼叫 2 簡單工廠模式,乙個工廠生產很多物件 最常用 3 工廠方法 在簡單工廠的基礎之上更加細分,分為幾個工廠 1 定義電腦介面,依賴倒置原則,即面向介面程式設計 public inte ce computer 2 定義hp和...

設計模式 簡單工廠 工廠方法 抽象工廠方法模式

簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...