設計模式之工廠模式(簡單工廠 工廠模式 抽象工廠)

2022-09-12 16:21:22 字數 3843 閱讀 3134

參考博文:   侵權必刪

什麼是工廠模式:通過「物件建立」模式繞開new,來避免物件建立(new)過程中所導致的緊耦合(依賴具體類)。

適用性:使用new建立物件且導致緊耦合的場景。

思考:物件導向程式設計要以動態的思維去看待**。換句話說,在看**時需要時間概念,發現**在未來的穩定之處和變化之處。一般介面和抽象類是穩定的,而具體實現是變化的,這也是面向介面/抽象程式設計的原因,可以使**更加穩定。

先思考如下場景:目前只有一種producta,需要producta時,使用** producta pa = new producta()。如果未來需求變化,新增productb、productc等,會導致上述**是不穩定。因為producta pa = new producta() 這倆部分都依賴了具體實現。

將producta、productb、productc抽象出product,改寫**

productpa = new producta(),目前依然依賴nproducta

,工廠問題就是為了解決這種new依賴的問題。

一、簡單工廠模式

基本**:

package

******factory;

public

abstract

class

produce

package

******factory;

public

class producta extends

produce

}

package

******factory;

public

class produvtb extends

produce

}

package

******factory;

public

class

******facory

else

if(type.equals("b"))

else

return

null

; }

}

public

static

void

main(string args)

}

二、工廠模式

------------------工廠模式------------------------

factory f = new factorya(); //這裡使用new的方式代替,實際情況下應該根據需要傳入具體的工廠

produce p = f.getproduce(); //均依賴抽象

p.readme();

三、抽象工廠模式(可以認為抽象工廠模式是工廠模式的一般形式)

/*** 只能與產品a配套 */

public

class produce1 extends

producenumber

}

package

abstractfactory;

/*** 只能與產品b配套 */

public

class produce2 extends

producenumber

}

package

abstractfactory;

import

******factory.produce;

public

abstract

class

abstractfactory

package

abstractfactory;

import

******factory.produce;

import

******factory.producta;

public

class factorya1 extends

abstractfactory

@override

public

producenumber getproducenumber()

}

package

abstractfactory;

import

******factory.produce;

import

******factory.produvtb;

public

class factoryb2 extends

abstractfactory

@override

public

producenumber getproducenumber()

}

//

--------------------抽象工廠模式-----------------------

// 有產品a和產品1配套,產品b和產品2配套。如果只用工廠模式需要4個具體工廠,且有可能出現產品不匹配的問題。

// 抽象工廠模式為建立一組相關或相互依賴的物件提供乙個介面,保證產品的配套問題,使得上述問題只要兩個工廠。

// 適用場合:多個需要配套的產品

abstractfactory f = new factorya1();//

這裡使用new的方式代替,實際情況下應該根據需要傳入具體的工廠

produce p =f.getproduce();

producenumber pn =f.getproducenumber();

p.readme();

pn.readme();

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

工廠模式可以分為 簡單工廠模式 普通工廠模式 靜態工廠模式 抽象工廠模式 簡單工廠模式 就是如何去例項化物件的問題,對於很容易變化的問題,應該考慮用乙個單獨的類來做這個創造例項的過程,這個單獨的類就是工廠 例子 通過簡單工廠建立各種圖形的實現過程 簡單工廠模式建立步驟 建立乙個介面 例 圖形介面 建...

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

我們常見的設計模式,大致可以分為三大類 建立型 結構性 行為型。工廠模式,屬於建立型。工廠模式到底起的是什麼作用呢?概括來說就是解耦。當某一類物件需要頻繁建立的時候,就會和程式產生比較大的耦合,在物件初始化屬性較多時,工廠模式可以較少這種耦合,這就是他的作用。一般情況下根據場景不同,工廠模式有幾種不...

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

定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...