工厂模式创建对象
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:自定义构造函数可以解决这一缺点,这里我们放到 自定义 构造函数里说!
自定义构造函数 >>>已更新>>点击进入