工厂方法模式

工厂方法模式

  • 概念
    工厂方法模式就是通过对产品类的抽象使其创建业务主要负责用于创建多类产品的实例。
    比如我们在一些网页中,广告投放等就会用到。当我们遇到既要添加类,又要改变工厂函数的情况,我们就可以用工厂方法模式。
  • 安全模式类
    安全模式类是说可以屏蔽使用对类的错误使用造成的错误。比如对于一个类的创建,我们知道类的前面需要new关键词,但是如果别人不知道这个类,那么就可能忽略new,直接执行类,这样就会造成一些错误。安全模式类我在前面已经讲过,这里就不再说明,下面我们来看一个安全的工厂方法:
  • 安全的工厂方法例子

      //安全模式创建的工厂类
      var factory = function(type,content){
          if(this instanceof factory){
              var s = new this[type](content);
              return s;                                                             
          }else{
              return new factory(type, content);
          }
      }
      //工厂原型中设置创建所有类型数据对象的基类
      factory.prototype = {
          //java书的广告
          java: function(content){
              //....
          },
          javascript: function(content){
              //
          },
          php: function(content){
              //
          },
          UI: function(content){
              this.content = content;
              //闭包实现按顺序遍历
              (function(content){
                  var div = document.createElement('div');
                  div.innerHTML = content;
                  div.style.color = 'red';
                  /*console.log(div);*/
                  /*document.body.insertBefore(div);*/
              })(content);
          }
      };
      //测试
      var data = [
      {
          type: 'java',
          content: 'java是很强大的'
      },
      {
          type: 'javascript',
          content: 'javascript更加强大'
      },
      {
          type: 'UI',
          content: 'ui能实现不同的效果'
      }
      ];
    
      var a = factory(data[2].type, data[2].content);
      console.log(a.content);

    像这样你就可以添加各种的广告类了,而不需要在测试的时候再次创建。
    工厂方法模式的本意是将实际创建对象工作推迟到子类当中。我们可以把工厂方法看作是一个实例化对象的工厂类,为了安全起见,我们采用安全模式类,将创建对象的基类放在工厂方法类的原型中即可。

转载于:https://www.cnblogs.com/yehui-mmd/p/6498044.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值