美文网首页
工厂模式 之二 工厂方法模式

工厂模式 之二 工厂方法模式

作者: helloyoucan | 来源:发表于2019-04-23 20:17 被阅读0次

工厂方法模式:创建多类对象

通过对产品类的抽象,时期创建业务主要负责用于创建多累产品的实例

需求1:计算机培训广告投放:java,绿色字体;php,黄色字体,红色背景

//创建Java学科类
const Java = function(content){
    // 将内容保存起来,方便后面使用
    this.content = content
    // 创建对象时,通过闭包,直接执行,将内容按需求的样式插入到页面内
    ((content)=>{
        if(!document) return
        const div = document.createElement('div')
        div.innerHTML = content
        div.style.color ='green'
        document.querySelector('body').appendChild(div)
    })(content)
}
//创建Php学科类
const Php = function(content){
    this.content = content
    ((content)=>{
        if(!document) return
        const div = document.createElement('div')
        div.innerHTML = content
        div.style.color ='yellow'
        div.style.background ='red'
        document.querySelector('body').appendChild(div)
    })(content)
}

需求2:JavaScript,粉色背景

//创建JavaScript学科类
const JavaScript = function(content){
    this.content = content
    ((content)=>{
        if(!document) return
        const div = document.createElement('div')
        div.innerHTML = content
        div.style.background ='pink'
        document.querySelector('body').appendChild(div)
    })(content)
}
// 利用前面学的简单工厂模式,编写学科类工厂
function JobFactory(type,content){
    switch(type){
        case "java":return new Java(content)
        case "php":return new Php(content)
        case "JavaScript":return new JavaScript(content)
    }
}
JobFactory('JavaScript','JavaScript 哪家强')

问题:需求改变或者变多时,不仅要天机类,还要修改工厂函数
优化1:使用工厂方法模式(将创建对象的工作推迟到子类中,核心类变成抽象类),以后新加需求只需添加一个类
备注:由于JavaScript没写想java那样轻易创建抽象类,所以在JavaScript中实现工厂模式只需要参考核心思想即可。可以将工厂方法看做一个实例化对象的工厂类

// 安全模式创建创建工厂类
/*
安全模式:如果使用new实例化,正常实例化,
如果是通过调用函数的方式获取实例对象,
则将类进行实例化后并返回
*/
const Factory = function(type,content){
    if(this instanceof Factory){
        return new this[type](content)
    }else{
        return new Factory(type,content)
    }
}
// 工厂原型中设置创建所有类型数据对象的基类
Factory.prototype = {
    java(content){
        //...
    },
    javaScript(content){
        //...
    },
    ui(content){
        //...
    },
    php(content){
        //...
    }
}
const data = [
    {type:'JavaScript',content:'JavaScript 哪家强'},
    {type:'Java',content:'Java 哪家强'},
    {type:'php',content:'php 哪家强'},
    {type:'UI',content:'UI 哪家强'},
    {type:'Go',content:'JavaScript 哪家强'},
    {type:'JavaScript',content:'JavaScript 哪家强'},
]
for(let i = 0,l=data.length;i<l;i++){
    Factory(data[i].type,data[i].content)
}

相关文章

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 设计模式 工厂模式

    工厂模式 工厂模式三大类1、简单工厂模式(静态工厂方法模式)2、工厂方法模式3、抽象工厂模式(Kit模式) 简单工...

  • 设计模式-工厂方法模式

    1、工厂方法模式(Factory Method) 工厂方法模式分为三种: 普通工厂模式 多个工厂模式 静态工厂模式...

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

  • 设计模式学习--工厂方法模式

    模式定义 工厂方法模式又称工厂模式,也叫虚拟构造器模式或者多态工厂模式,它属于类创建型模式。在工厂方法模式中,工厂...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • 建造模式

    包括:简单工厂、工厂方法、抽象工厂、单例模式、多例模式、建造模式、原始原型模式。 简单工厂:又名静态工厂方法模式,...

  • [Android]三种工厂模式总结。

    Android中,工厂模式分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。 一.简单工厂模式。 定义:简单工厂...

网友评论

      本文标题:工厂模式 之二 工厂方法模式

      本文链接:https://www.haomeiwen.com/subject/ekzmgqtx.html