# 工厂模式 当需要实例化的类比较复杂,需要在实例化之前进行一些处理的时候,可以采用工厂模式,创建一个工厂方法,专门生产示例。 有简单工厂模式和复杂工厂模式。 ## 简单工厂模式 示例 ```js function CreatePerson(name,age,sex) { var obj = new Object(); obj.name = name; obj.age = age; obj.sex = sex; obj.sayName = function(){ return this.name; } return obj; } ``` js 中的 new操作本质上也是一个简单工厂模式 ```js new Animal('cat') = { var obj = {}; obj.__proto__ = Animal.prototype; var result = Animal.call(obj,"cat"); return typeof result === 'object'? result : obj; } ``` ## 复杂工厂模式 将其成员对象的实列化推迟到子类中,子类可以重写父类接口方法以便创建的时候指定自己的对象类型。