設計模式 3 工廠方法模式

2021-09-16 11:55:26 字數 1677 閱讀 8687

定義:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使得乙個類的例項化延遲到了其子類。

/**

* 抽象工廠介面,用於建立計算物件

*/public inte***ce ifactory

/** * 抽象計算介面,表示用於實現的業務

*/public inte***ce calculate

/** * 具體工廠類,實現抽象工廠介面,返回乙個具體的計算物件

*/class addfactory implements ifactory

}class subfactory implements ifactory

}class mulfactory implements ifactory

}class divfactory implements ifactory

}/**

* 具體操作,實現計算介面

*/class add implements calculate

}class sub implements calculate

}class mul implements calculate

}class div implements calculate

}/**

* 測試

*/public class test

}

工廠方法模式優點:與簡單工廠相比,工廠方法模式克服了簡單工廠違背開放-封閉原則的缺點,又保持了風窗物件建立過程的優點。

簡單工廠模式優點:工廠類中包含了必要的判斷,根據客戶端選擇條件,動態例項化相關的類。

工廠方法模式缺點:每增加乙個產品,就需要額外的增加乙個產品工廠的類,增加了額外的開發量。

小結:可以看出:工廠方法模式實現時,客戶端需要決定例項化哪乙個工廠,選擇判斷還是在的;工廠方法把簡單工廠的內部邏輯判斷移動到了客戶端,原來是更改工廠類,現在是更改客戶端。

/**

* 抽象工廠介面,用於建立計算物件

*/public inte***ce ifactory

/** * 抽象計算介面,表示用於實現的業務

*/public inte***ce calculate

/** * 具體工廠,使用匿名內部類實現介面

*/public class addfactory implements calculate

public static ifactory factory = new ifactory()

};}/**

* 將改動的工廠類,做實際運算(可以加入擴充套件方法,實現各個具體工廠)

*/public class factories

}/**

* 好處:不用改動客戶端

*/public class test

}

優點:減少了類的建立次數,只需要建立乙個工廠類(經典的工廠方法模式在增加產品時,需要建立具體操作類和具體操作工廠類)

可以使用的手段:

1.客戶端可以不用修改,只修改factories類的乙個方法(實現了對客戶端細節的遮蔽),但只能使用其中一種具體工廠類

2.可增加factories類中的方法,讓其有多個具體操作類的實現,但是客戶端此時就需要知道有什麼方法了,雖然增加了客戶端的負擔,但可實現**的復用

設計模式 3 工廠方法模式

1.意圖 定義乙個用於建立物件的的介面,讓子類決定例項化哪乙個類.2.適用性 當乙個類不知道它必須所建立的物件的類的時候。當乙個類希望由它的子類來指定它所建立的物件的時候。3.抽象工廠和工廠方法的區別 抽象工廠 模式依賴於 工廠方法 模式的。因此,抽象工廠強調的是前面的動詞 抽象 也就是說,你將工廠...

設計模式(3)工廠方法模式

簡單工廠設計模式的思路,決定了每次新增一種具體的產品時,就需要更改工廠內部的產品構成。因為開閉原則,決定了對外開放介面,對內封閉的思路,工廠方法設計模式,不在使用工廠類統一建立所有的具體產品,不同工廠針對不同的產品,新增產品時,需要同時新增對應的工廠。工廠方法模式 定義乙個用於建立物件的介面,但是讓...

初始設計模式3 工廠方法模式

工廠方法模式,即定義乙個用於建立物件的介面,讓子類決定例項化哪個類。定義抽象產品類 public abstract class product 定義具體產品類 public class conproduct extends product 定義抽象工廠類 public abstract class ...