工厂模式创建对象

2018-08-20  本文已影响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:自定义构造函数可以解决这一缺点,这里我们放到 自定义 构造函数里说!
自定义构造函数 >>>已更新>>点击进入

上一篇下一篇

猜你喜欢

热点阅读