工厂模式
简单来说,工厂模式是将实现同一事情的相同代码,放到一个函数中去,以后如果想再实现这个功能,都不需要重新编写这些代码了,只要执行当前的函数即可。
主要思想
将对象的创建和对象的实现相分离,是一种关注对象创建的概念。
简单工厂
简单工厂模式也称为静态工厂模式,由一个工厂对象来决定创建某一种产品对象类的实例,主要用来创建同一类对象。
调用需要的功能到工厂里获取,无需关注创建过程。
简单工厂的优点就是明确了各自的职责和权利,有利于整个软件体系结构的优化。缺点就是违反了开闭原则,如果要新添加类,就要改变工厂类。
//创建一个函数名为Person,参数为name,age
function Person(name,age){
var obj = {};
obj.name = name;
obj.age = age;
obj.say = function(){
console.log('my name is '+this.name)
}
return obj
}
var p1 = Person('张三',19)
p1.say()
console.log(p1)
var p2 = Person('李四',89)
p2.say()
console.log(p2)
抽象工厂
抽象工厂模式提供了一种封装一组具有相同主题的单个工厂而无需指定其他类的方法。即工厂的工厂。
构造函数对整个创建过程的控制是有限的,有时你需要把控制权交给一个拥有更广泛知识的工厂。
一个抽象工厂创建了由一个共同主题相关的对象。在面向对象的编程中,工厂是创建其他对象的对象。一个抽象工厂已经抽象出来了一个主题,这个主题被创建的对象所共享。