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

2021-09-12 00:21:20 字數 3070 閱讀 3158

簡介

工廠方法模式分為:

簡單工廠模式

工廠方法模式

抽象工廠方法模式

簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(static factory method)模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實

uml圖示例

public class easyfactory 

static class jeepproduct implements iproduct

}static class sportproduct implements iproduct

}static class bydproduct implements iproduct

}public static void main(string args)

優點:簡單工廠模式能夠根據外界給定的資訊,決定究竟應該建立哪個具體類的物件。明確區分了各自的職責和權力,有利於整個軟體體系結構的優化。

缺點:

很明顯工廠類集中了所有例項的建立邏輯,容易違反graspr的高內聚的責任分配原則

工廠方法模式factory method,又稱多型性工廠模式。在工廠方法模式中,核心的工廠類不再負責所有的產品的建立,而是將具體建立的工作交給子類去做。該核心類成為乙個抽象工廠角色,僅負責給出具體工廠子類必須實現的介面,而不接觸哪乙個產品類應當被例項化這種細節。

首先看一下下uml類圖結構示例

**示例

public class methodfactory 

static class jeepproduct implements iproduct

}static class sportproduct implements iproduct

}static class bydproduct implements iproduct

}inte***ce ifactory

static class jeepfactory implements ifactory

}static class sportfactory implements ifactory

}static class bydfactory implements ifactory

}public static void main(string args)

優點:子類提供掛鉤。基類為工廠方法提供預設實現,子類可以重寫新的實現,也可以繼承父類的實現。-- 加一層間接性,增加了靈活性

遮蔽產品類。產品類的實現如何變化,呼叫者都不需要關心,只需關心產品的介面,只要介面保持不變,系統中的上層模組就不會發生變化。

典型的解耦框架。高層模組只需要知道產品的抽象類,其他的實現類都不需要關心,符合迪公尺特法則,符合依賴倒置原則,符合黎克特制替換原則。

多型性:客戶**可以做到與特定應用無關,適用於任何實體類。

缺點:

需要creator和相應的子類作為factory method的載體,如果應用模型確實需要creator和子類存在,則很好;否則的話,需要增加乙個類層次。

抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供乙個介面,使客戶端在不必指定產品的具體的情況下,建立多個產品族中的產品物件。根據黎克特制替換原則,任何接受父型別的地方,都應當能夠接受子型別。因此,實際上系統所需要的,僅僅是型別與這些抽象產品角色相同的一些例項,而不是這些抽象產品的例項。換言之,也就是這些抽象產品的具體子類的例項。工廠類負責建立抽象產品的具體子類的例項。

看一下下uml類圖結構示例

**示例

public class abstractmethodfactory 

static class jeepproduct extends iproducta

}static class sportproduct extends iproducta

}static abstract class iproductb

static class baaproduct extends iproductb

}static class bbbproduct extends iproductb

}static abstract class ifactory

static class jeepfactory extends ifactory

@override

iproductb createpacket()

}static class sportfactory extends ifactory

@override

iproductb createpacket()

}public static void main(string args)

優點:抽象工廠模式隔離了具體類的生產,使得客戶並不需要知道什麼被建立。

當乙個產品族中的多個物件被設計成一起工作時,它能保證客戶端始終只使用同乙個產品族中的物件。

增加新的具體工廠和產品族很方便,無須修改已有系統,符合「開閉原則」。

缺點:

增加新的產品等級結構很複雜,需要修改抽象工廠和所有的具體工廠類,對「開閉原則」的支援呈現傾斜性。

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

典型的介面和實現類如下,我們要根據相應的需求建立出不同的物件。public inte ce animal public class catimplements animal public class dogimplements animal public class animalfactory el...

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

引言 最近發現一篇講解工廠模式比較簡易明了的文章,內容如下,原文連線為 簡單工廠模式 簡單工廠模式不是 23 種裡的一種,簡而言之,就是有乙個專門生產某個產品的類。比如下圖中的滑鼠工廠,專業生產滑鼠,給引數 0,生產戴爾滑鼠,給引數 1,生產惠普滑鼠。工廠模式也就是滑鼠工廠是個父類,有生產滑鼠這個介...

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

一 什麼是工廠模式?工廠模式有一種非常形象的描述,建立物件的類就如乙個工廠,而需要被建立的物件就是乙個個產品 在工廠中加工產品,使用產品的人,不用在乎產品是如何生產出來的。從軟體開發的角度來說,這樣就有效的降低了模組之間的耦合。對於工廠模式,具體上可以分為三類 1.簡單工廠模式 2.工廠方法模式 3...