设计模式 工厂模式 优缺点 代码实现

设计模式之: 工厂

大白话:当我们需要一辆车时候,就要说4s店,你要的大体参数有哪些,工厂就会根据你的要求,给你造一个全新的车给你,你只需要关注你的喜好,不用考虑造车过程和细节;

工厂模式详细

  • 本质:封装创建对象细节,根据参数,返回特定类型对象;
  • 解决什么:解决频繁藏繁琐创建对象和选择对象
  • 何时使用:我们明确地计划不同条件下创建不同实例时
  • 如何实现:封装公有参数对象过程,并根据判断,赋值特定属性;
  • 生活案例:
    1. 需要一辆车,告诉销售你的配置
    2. 需要衣服裤子,告诉销售你的码数腰围胸围
    3. 需要租房,告诉中介价格位置要求

优点

  1. 方便,获取一个想要的对象,通过名字获取即可;
  2. 扩展性方便,新增对象,只需要加一个工厂即可
  3. 私密性,频闭创建对象过程细节,调用者只关心方法

缺点:

  • 过多的工厂过大的添加工厂,会导出工厂类庞大臃肿,增加不必要的复杂度;

代码实现:

/** 手机工厂 */
function PhoneFactory(name) {
    const phoneBase = Object.create(null);
    phoneBase.screen = '全面屏'
    phoneBase.wifi = 'WIFI 2.0'
    phoneBase.pixel = '6400W'

    if (this instanceof PhoneFactory) {
        const phone = new this.__proto__[name](phoneBase)
        return phone
    } else {
        return new PhoneFactory(name)
    }
}
PhoneFactory.prototype = {
    HW: function (base) {
        return {...base, name: '华为'}
    },
    iphone:  function (base) {
        return {...base, name: '苹果'}
    },
    MI: function (base) {
        return {...base, name: '小米'}
    }
}
const HW = new PhoneFactory('HW')
const iphone = PhoneFactory('iphone')
const MI = PhoneFactory('MI')

小结

  • 根据上面简单代码,知道了大概,就是生活工厂概率,核心逻辑:把创建对象相关逻辑的操作统统都封装一起,逻辑抽离,在里面做对象加工过程
  • 补充:上面代码虽然很简单,但是就是最直观的工厂,如果后期要工厂,可以取消繁琐if操作;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值