简单工厂模式就是对 同一类对象创建过程的抽象,在形式上它仅仅只是通过 if 等判断语句,根据不同条件去生成不同对象,且只能创建已经设计的好的数据,如果要添加新的数据,必须重新修改代码添加。
function getPhne(brand) {
if (brand === 'hw') {
return {
mode: 'mate 40',
brand: '华为',
price: 4500,
call: function() {},
takePhotos: function () {}
}
} else if (brand === 'xm') {
return {
mode: '米10',
brand: '小米',
price: 4000,
call: function() {},
takePhotos: function () {}
}
} else {
return '暂无该机器!'
}
}
const hw = getPhne('hw');
const xm = getPhne('xm');
总结:
优点:
- 将创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建,实现了解耦;
- 把初始化实例时的工作放到工厂里进行,使代码更容易维护。
缺点:
- 违背
开放 - 关闭原则,一旦添加新产品就不得不修改工厂类的逻辑,这样就会造成工厂逻辑过于复杂; - 工厂集中了所有的创建逻辑,如果当产生的种类过多时,就会过于冗余。