zoukankan      html  css  js  c++  java
  • 工厂模式(Factory)

    工厂模式也是对象创建模式之一,它通常在类或类的静态方法中去实现。构造对象的一种方式是使用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等方法的对象。还可以根据参数如“once”, “memory”等构造出具有不同性质的对象。

  • 相关阅读:
    ckeditor+粘贴word
    java+批量下载大文件
    链接批量下载文件
    java+大文件上传解决方案
    php+提高大文件上传速度
    富文本粘贴word文档内容图片处理
    软件开发工具(三)——理论与开发过程
    c结构体里的数组与指针
    Java解析Property文件
    怎样高速编译mediatekoperator以下代码
  • 原文地址:https://www.cnblogs.com/snandy/p/2771128.html
Copyright © 2011-2022 走看看