簡單工廠模式屬於類的建立型模式,又叫做靜態工廠方法模式。通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。
1.工廠(creator)角色
簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類可以被外界直接呼叫,建立所需的產品物件。
2.抽象(product)角色
簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。
3.具體產品(concrete product)角色
簡單工廠模式所建立的具體例項物件
在這個模式中,工廠類是整個模式的關鍵所在。它包含必要的判斷邏輯,能夠根據外界給定的資訊,決定究竟應該建立哪個具體類的物件。使用者在使用時可以直接根據工廠類去建立所需的例項,而無需了解這些物件是如何建立以及如何組織的。有利於整個軟體體系結構的優化。
不難發現,簡單工廠模式的缺點也正體現在其工廠類上,由於工廠類集中了所有例項的建立邏輯,所以「高內聚」方面做的並不好。另外,當系統中的具體產品類不斷增多時,可能會出現要求工廠類也要做相應的修改,擴充套件性並不很好。
package com.******factory;
/** * 簡單工廠模式
* @author zw
* data 2023年6月2日
*/ /**
* 採集
* */
public void get()
}
package com.******factory;
public class banana implements fruit
}
package com.******factory;
/** * 水果類的介面
* @author zw
* data 2023年6月2日
*/public inte***ce fruit
package com.******factory;
/** * 工廠類
* @author zw
* data 2023年6月2日
*/public class fruiltfactory
// /**
// * 例項化香蕉
// * @return
// */
// public static fruit getbanana()
public static fruit getfruit(string name) throws exceptionelse if(name.equalsignorecase("banana"))else
// 改進3
/*動態載入
* 使用泛型
*/class fruit = class.forname(name);
return (fruit) fruit.newinstance();
}}
測試類
package com.******factory.test;
import com.******factory.fruiltfactory;
import com.******factory.fruit;
/** * 測試類
* @author zw
* data 2023年6月2日
*/public class test
}
單設計模式
目標 記憶體中只能有乙份物件 include include 1.singleton不能為棧物件,如果為棧物件,可以在fun1,fun2,main中建立很多個,那就只能通過是堆物件 2.不能直接通過new表示式來建立堆物件,如果通過new的方式建立的物件位址都不同 3.位於public區域getin...
簡單設計類
package com.qidai 1 假如我們在開發乙個系統時需要對員工進行建模,員工包含 3 個屬性 姓名 工號以及工資。經理也是員工,除了含有員工的屬性外,另為還有乙個獎金屬性。請使用繼承的思想設計出員工類和經理類。要求類中提供必要的方法進行屬性訪問。員工類 public class test...
XP簡單設計之我見
xp的簡單設計指導團隊的設計盡可能的簡單 具有表現力。此外他們僅僅關注於計畫本次迭代中要完成的user story。他們並不會考慮哪些未來的user story。相反,他們會在不斷改進系統設計,是之對正在實現的user story而言保持在最優狀態。它包含三條原則 盡可能的使用最簡單的方法來實現當前...