深入浅出设计模式 - 创建型设计模式 - 1.简单工厂模式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37339364/article/details/89209559

引言:

最近在学习设计模式,于是仔细研究了一下,决定整理成文章分享出来,对于没有设计模式的小白,再合适不过了,看招吧!

盗个图片~ ~ ~~

cmd-markdown-logo

什么是设计模式:

我理解的设计模式,就是一种编程的风格和规范,这个概念最早是出现在建筑学中,认为设计风格是一种美学,那我们就把设计模式,当成是编程的美学吧!

设计模式分类:

  • 创建型设计模式
  • 结构型设计模式
  • 行为型设计模式
  • 技巧型设计模式
  • 结构型设计模式

本小节主要讲解—创建型设计模式 — 持续更新

简单工厂模式

简介:简单工厂模式,又叫静态工厂方法,由一个工厂对象决定创建某一种产品对象类的实例,主要用来创建同一类对象

其实创建型设计模式,除了简单工厂模式还有, 工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式,后续会更新!!!

优点 ~ 百度百科:

工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。

缺点 ~ 百度百科:

由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。

当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利;
这些缺点在工厂方法模式中得到了一定的克服。

个人阐述:

其实,我觉得,简单工厂模式就是把所有的和某一种产品有关的类,对象,方法,整合到一起,然后通过传递的不同参数,执行不同的逻辑

代码用例:

// 篮球类
let basketball = function(){
    this.intro = '篮球类'
}
basketball.prototype ={
    getMember:function(){
       console.log('每个球队要五个队员!')  
       // 其实主要是想表述篮球的逻辑,并不是三种球都是重复的console
    },
    getBallSize:function(){
        console.log('篮球很大')
    }
}

// 足球类
let football = function(){
    this.intro = '足球类'
}
basketball.prototype ={
    getMember:function(){
       console.log('每个球队要好几个队员!')
    },
    getBallSize:function(){
        console.log('足球也很大')
    }
}

// 网球类
let tennis = function(){
    this.intro = '网球类'
}
basketball.prototype ={
    getMember:function(){
       console.log('每个球队要好几个队员!')
    },
    getBallSize:function(){
        console.log('网球也很大')
    }
}

// 如上图,我们创建了三个类,

// 但是,如果我们想调用他们的时候,需要new出来一个个的实例,
// 而工厂模式,就是把上面所有相关的,整合到一起,
// 这样做的好处就是可以通过传递的信息,创建出我们需要的对象

let factory = function(name){
    switch(name){
        case 'basketball'
            return new basketball()
        case 'football'
            return new football()
        case 'tennis'
            return new tennis()
    }
}



//  调用

var foot = factory(basketball)
console.log(foot)
console.log(foot.getMember)


//  因为简单工厂模式的核心就是创建对象,和整合相同代码部分
// 代码也可以这样写
let factory = function(name){
    let obj = new Object()
    if(name == 'basketball'){
         obj.intro = '篮球类'
        obj.getMember = function(){
           console.log('每个球队要五个队员!')  // 其实主要是想表述篮球的逻辑
        }
        obj.getBallSize=function(){
            console.log('篮球很大')
        }
    }
    if(name == 'football'){
         obj.intro = '篮球类'
        obj.getMember = function(){
           console.log('每个球队要五个队员!')    // 其实主要是想表述足球的逻辑
        }
        obj.getBallSize=function(){
            console.log('足球很大')
        }
    }
    
     if(name == 'tennis'){
         obj.intro = '网球'
        obj.getMember = function(){
           console.log('每个球队要五个队员!')    // 其实主要是想表述足球的逻辑
        }
        obj.getBallSize=function(){
            console.log('网球很大')
        }
    }
    
    return obj
}

总结,简单工厂模式

上述主要讲了两种设计简单工厂模式的方法,一种是通过类的实例化,一种是通过创建对象,然后返回。

展开阅读全文

没有更多推荐了,返回首页