建立型模式 工廠模式

2021-08-19 05:46:26 字數 2243 閱讀 3337

1.什麼是工廠模式

工廠模式提供了建立物件的最佳方式,在建立物件時不會對客戶端暴露建立邏輯,並且通過乙個共同的介面來指向建立的物件。

2.使用場景

在不同的條件下建立不同的例項,比如spring使用了工廠模式管理bean的建立、生命週期以及bean與bean之間的關係。

3.如何實現

定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。

4.優點

5.缺點

每次增加乙個產品時,都需要增加乙個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。

6.應用示例以及uml

工廠模式 有三類:

**示例:

建立多種幾何圖形,圓形、長方形、正方形

uml檢視:

7.**實現

7.1 介面 shape

public inte***ce shape
7.2 正方形square

public class square implements shape

}

7.3 長方形rectangle

public class rectangle implements shape

}

7.4圓形circle

public class circle implements shape

}

7.5普通工廠方法ordinaryshapefactory

public class ordinaryshapefactory else if("rectangle".equalsignorecase(shapetype))else if("square".equalsignorecase(shapetype))else

}}

7.6 多個工廠方法methodfactory

public class methodfactory 

/*** 建立長方形

* @return

*/public shape getrectangleshape()

/*** 建立正方形

* @return

*/public shape getsquareshape()

}

7.7靜態工廠方法staticmethodfactory

public class staticmethodfactory 

/*** 建立長方形

* @return

*/public static shape getrectangleshape()

/*** 建立正方形

* @return

*/public static shape getsquareshape()

}

8.測試類

8.1 普通工廠測試類

public class ordinaryshapefactorytest 

}

測試結果:

this is circle drawing

this is rectangle drawing

this is square drawing

8.2 多個工廠方法測試類

public class methodfactorytest 

}

測試結果:

this is circle drawing

this is rectangle drawing

this is square drawing

8.3 靜態工廠測試類

public class staticmethodfactorytest 

}

測試結果:

this is circle drawing

this is rectangle drawing

this is square drawing

建立型模式 工廠模式

建立型模式 工廠模式 工廠方法模式同樣屬於類的建立型模式又被稱為多型工廠模式 符合 開放 封閉 原則 通過新增 的方式,不是通過修改 的方式完成功能的增強。工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,...

建立型模式(工廠模式)

目錄現在對該系統進行修改,不再設計乙個按鈕工廠類來統一負責所有產品的建立,而是將具體按鈕的建立過程交給專門的工廠子類去完成,我們先定義乙個抽象的按鈕工廠類,再定義具體的工廠類來生成圓形按鈕 矩形按鈕 菱形按鈕等,它們實現在抽象按鈕工廠類中定義的方法。這種抽象化的結果使這種結構可以在不修改具體工廠類的...

建立型模式 工廠模式

意圖 定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。主要解決 主要解決介面選擇的問題。何時使用 我們明確地計畫不同條件下建立不同例項時。如何解決 讓其子類實現工廠介面,返回的也是乙個抽象的產品。關鍵 建立過程在其子類執行。應用例項 1 您需要一輛汽車...