設計模式 工廠模式

2021-08-10 17:18:31 字數 2036 閱讀 2581

1.工廠模式的概念:通過工廠模式來代替new方法建立物件,包括工廠方法模式和抽象工廠模式,抽象工廠模式是工廠方法模式的擴充套件

2.工廠模式的目的:

定義乙個介面來建立物件,但是讓子類來決定那些物件需要被例項化,工廠模式把例項化的工作推遲到子類中去實現

3.工廠模式的應用場景:

1.有一組類似的物件需要建立,比如生產毛巾的工廠一般不會生產筆記本

2.在編碼時不能預知那些類是需要例項化的,比如去逛超市,我們提前沒有計算要買什麼,而是進入超時之後再做選擇

3.需要考慮系統的擴充套件性,不應依賴於產品例項如何被建立,組合和表達的細節

4.**實現:

1.介面:

public inte***ce carinte***ce

2.實現類:

public class bent implements carinte***ce

}public class fut implements carinte***ce

}

3.工廠:

public class factory

}

5.spring中的beanfactory舉例:

1.beanfactory作為spring基礎的ioc容器,是s平ring的乙個bean工廠

2.如果單從工廠模式考慮,beanfactory就是用來生產bean,然後提供給客戶端

6.spring中bean的例項化過程:

1.通過類預設的構造器或者指定的構造器來例項化bean(暫成為instanse1)

2.如果bean的配置檔案中配置了bean的屬性值,則在instance1的基礎上進行屬性注入,這種注入是覆蓋性的,得到instance2

3.如果bean實現了initializablebean介面,則呼叫afterpropertiesset()方法來操作instance2,得到instance3

4.如果bean的配置檔案中配置了init-method="init",則會呼叫指定的初始化方法,則在instance3的基礎上呼叫指定的初始化方法,得到instance4,當然,這個初始化的名字是任意的

7.工廠方法模式和抽象工廠模式的區別:

1.工廠模式是一種極端的抽象工廠模式,而抽象工廠模式可以看作是工廠模式的擴充套件

2.工廠模式是用來建立乙個產品的等級架構,而抽象工廠模式則是用來i建立多個產品的等級架構

3.工廠模式只有乙個抽象產品類,而抽象工廠模式則有多個抽象工廠類

8.工廠模式的優點:

1.系統可以在不修改工廠角色的情況下引進新的產品

2.客戶端不必關心物件的建立,明確了職責

3.更好的理解物件導向原則,面向介面程式設計

9.工廠模式的價值:

1. 有利有弊

優點:將物件的建立統一起來便於維護和整體把控,對擴充套件開放,對修改封閉

缺點:耦合性提高,由於工廠類集中了所有例項的建立邏輯,違反了高內聚責任分配原則,將全部建立邏輯集中到了乙個工廠類中,這種對條件的判斷和對具體產品型別的判斷交錯在一起,很難避免模組功能的蔓延,對系統的維護和擴充套件非常不利。

2.使用有限制

從工廠模式的示例可以看出:工廠模式需要類實現它的介面並且在業務內部存在明顯的繼承關係,比如汽車和賓士寶馬的關係。而繼承關係往往存在於模型之間,業務之間很難存在繼承關係,因此如果業務內部或者業務之間沒有這種顯式的繼承關係該咋辦?就算業務內部有繼承關係,各個業務交給你統一管理,這樣就會提高**的耦合性,當建立邏輯複雜的時候,工廠方法就很複雜,容易產生干擾。

3.其開閉性優點很容易被替代

可以通過高度層次化和模組化來提高系統的開閉性,而不必生硬地去套用工廠模式。

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...

設計模式 工廠設計模式

工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...