設計模式之工廠模式

2021-09-03 02:39:19 字數 1733 閱讀 1224

工廠模式在我們平常開發中應用比較廣泛,或許你不知道,但你已經使用了很多次了。我們明確地計畫不同條件下建立不同例項時,就會使用到工廠模式。工廠模式分為簡單工廠模式和抽象工廠模式。這邊我們先說簡單的工廠模式。

在任何需要生成複雜的物件的地方,都可以使用工廠模式。複雜物件適合使用工廠模式。而直接通過new就可以完成建立的物件無需使用工廠模式。

首先,我們建立乙個實體類的介面:

public

inte***ce

shape

現在我們建立2個實體類去實現這個介面:

public

class

square

implements

shape

}

public

class

circle

implements

shape

}

現在我們建立乙個抽象工廠類:

public

abstract

class

factroy

然後我們建立工廠1和工廠2:

public

class

squarefactory

extends

factroy

}

public

class

circlefactory

extends

factroy

}

現在我們就可以呼叫了:

public clas demo

}

我們可以看到輸出結果如下:

square:

draw

() method.

circle:

draw

() method.

這邊我們分成四個模組。乙個是抽象產品,是所有產品的父類。第二是具體產品,我們需要通過實現抽象產品來實現具體產品的物件。第三是抽象工廠,其方法是工廠方法的核心。最後是具體工廠,實現抽象工廠去實現具體的邏輯。

不過我們發現具體工廠越來越多的時候我們的類會越來越多…那麼我們可以通過反射去獲取例項。僅需乙個具體工廠類就可以解決了。那麼我們把**改一下:

public

abstract

class

factroy

public

class

basefactory

extends

factroy

catch

(exception e)

return

(t)shape;

}}

那麼我們的main方法就可以這麼修改了:

public clas demo

}

輸出結果為:

square:draw() method.

circle:draw() method.

工廠模式是完全符合設計原則的。降低了物件間的耦合度。而且他依賴於抽象的架構,將例項化的任務交給子類去完成。有較好的擴充套件性。

優點:

缺點:

設計模式 設計模式之工廠模式

工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...

c 設計模式 之 工廠模式之 工廠模式

1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...

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

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