美文网首页
工厂模式创建对象

工厂模式创建对象

作者: 夜静听风吹雨 | 来源:发表于2018-08-20 22:18 被阅读0次

    什么是工厂模式?

    工厂模式是面向对象编程语言中的一种设计模式, 为了能够抽象的创建具体对象!开发人员发明了一种函数

    用函数封装来封装特定接口创建对象的细节!

    function createdObject(name,age){
        var obj = new Object();
        obj.name = name 
        obj.age = age
        obj.sleep = function (){
            console.log("睡觉")
        }
        return obj
    }
    var dog = createdObject("小花",3)
    console.log(dog) // object
    
    
    工厂模式的优点?

    可以解决重复实例化对象的问题,也就是可以解决 创建多个 类似的对象的问题

    工厂模式的缺点?

    我们没有办法知道它创建出来的是一个什么类型的对象! (这句话看不懂可以看一下 下面的例子~)

    假设我们创建一个 数组对象 和一个 字符串对象

     var arr = new Array(100, 200) //数组对象
     var str = new String("hehe") //字符串对象
     console.log(arr instanceof Array) //true
    //使用`instanceof` 来判断 arr 是不是一个 Array 类型的对象 返回结果为true
     console.log(str instanceof String) //true
    //使用`instanceof` 来判断 str 是不是一个 String 类型的对象 返回结果为true
    
    

    以上代码 可以得出一个结论

    变量 arr 是一个 数组对象
    变量 str 是一个 字符串对象
    //好像有点废话了.....
    

    但是,我们使用工厂模式来创建的对象,它是没有办法分辨出对象的类型的!

    回到刚刚那个工厂模式创建的对象 dog 身上,我们使用instanceof 来判断它的类型

        console.log(dog instanceof String)//false
        console.log(dog instanceof Array)//false
    

    毫无疑问 答案都是 false

    这个 dog 对象 , 不是一个 字符串类型的对象, 也不是一个 数组类型的对象 我们没有办法知道它是一个什么类型的对象!这是工厂模式创建的对象它的缺点!

    PS:自定义构造函数可以解决这一缺点,这里我们放到 自定义 构造函数里说!
    自定义构造函数 >>>已更新>>点击进入

    相关文章

      网友评论

          本文标题:工厂模式创建对象

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