更新生成者模式示例,添加木屋和砖房建造者实现,重构相关代码并增强可读性
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
实例
|
||||
今天伟哥约自己在富士康工作的老乡出来喝酒,没想到老乡最近一直在加班。听说接了个大活,要同时为小米公司和苹果公司代工他们的笔记本电脑和手机生产业务。
|
||||
今天汤宝宝约自己在富士康工作的老乡出来喝酒,没想到老乡最近一直在加班。
|
||||
听说接了个大活,要同时为小米公司和苹果公司代工他们的笔记本电脑和手机生产业务。
|
||||
*/
|
||||
|
||||
// 抽象产品 - 手机
|
||||
@@ -76,6 +77,7 @@ class XiaomiFactory extends AbstractFactory {
|
||||
}
|
||||
}
|
||||
|
||||
// 客户端代码
|
||||
const client = (factory: AbstractFactory) => {
|
||||
const phone = factory.createPhone();
|
||||
const laptop = factory.createLaptop();
|
||||
@@ -85,22 +87,20 @@ const client = (factory: AbstractFactory) => {
|
||||
laptop.setOS();
|
||||
};
|
||||
|
||||
function main() {
|
||||
(function () {
|
||||
console.log("======== 抽象工厂模式 ========");
|
||||
|
||||
// 伟哥先去苹果工厂生产产品
|
||||
// 先去苹果工厂生产产品
|
||||
let factory: AbstractFactory = new AppleFactory();
|
||||
console.log(`伟哥选择了${factory.name}生产产品:`);
|
||||
console.log(`汤宝宝选择了${factory.name}生产产品:`);
|
||||
client(factory);
|
||||
|
||||
console.log("\n切换工厂生产其他品牌的产品...\n");
|
||||
|
||||
// 伟哥又去小米工厂生产产品
|
||||
// 又去小米工厂生产产品
|
||||
factory = new XiaomiFactory();
|
||||
console.log(`伟哥选择了${factory.name}生产产品:`);
|
||||
console.log(`汤宝宝选择了${factory.name}生产产品:`);
|
||||
client(factory);
|
||||
|
||||
console.log("====== 抽象工厂模式结束 ======");
|
||||
}
|
||||
|
||||
main();
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user