厂子模式为是目标创建模式有,它通常以近似还是看似的静态方法中去实现。构造对象的一模一样种方式是运用new操作符,但以new时幸本着落实编程,会造成“耦合”问题,与具体的类涉密不可分。导致代码更脆弱,缺乏弹性,在复杂逻辑的类型被建议是面向接口编程。

 

先期押简单工厂模式

Person(name, age) {
    var obj = {}
    obj.name = name
    obj.age = age
    return obj
}
var p1 = Person('jack', 25)
var p2 = Person('lily', 22)

与构造函数方式描绘一个类似的区别在没有运用this,而是每次都组织一个空对象,然后为那上加属性。创建对象方式不是用new,而是采取函数调用方式。这种艺术大多用来代替一个近似(具有同样属性之目标),而复杂一些底厂则可通往不同类型的目标。

 

下面为一个水果工厂示例

function Banana() {
    this.price = '$1.5'
}
function Apple() {
    this.price = '$1.2'
}
function Orange() {
    this.price = '$2.2'
}
// 静态工厂类
function Fruit() {}
Fruit.factory = function(type) {
    if (!window[type]) {
        return
    }
    var fruit = new window[type]
    return fruit
}
// 制造不同的水果
var banana = Fruit.factory('Banana')
var apple  = Fruit.factory('Apple')
var orange = Fruit.factory('Orange')

产生三个水果类Banana、Apple、Orange,一个水果工厂类Fruit,通过静态方法factory每次可往出不同的水果类对象。

 

厂子模式于JavaScript原生对象Object也享有体现,比如

var obj = Object(),
    num = Object(1),
    str = Object('s'),
    boo = Object(false);

Object就是一个工厂,根据参数不同会组织出不同的目标。obj是一个缺损对象,num是一个Number类型的对象,str是一个String类型的目标,boo是Boolean类型的靶子。

 

jQuery
1.7吃新增的$.Callbacks也是一个厂,每次调用它还见面回到一个具add,
remove, fire等方法的靶子。还可以根据参数如“oncejQuery”,
“memory”等结构出具有不同属性的靶子。

 

 

相关文章

网站地图xml地图