JavaScript设计模式(四)——工厂模式

版权声明:如有转载复制请注明出处,博主QQ715608270,欢迎沟通交流! https://blog.csdn.net/qq_41000891/article/details/82842944

一、工厂模式概念解读

       工厂模式定义一个用于创建对象的接口,这个接口由实例决定实例化哪一个类。该模式使得一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型(抽象工厂)

       这个模式十分有用,尤其是创建对象流程赋值的时候,比如依赖于很多设置文件等。并且,你会经常在程序里看到工厂方法,用于让子类定于需要创建的对象类型。

一、工厂模式的作用和注意事项

模式作用:

       1.对象的构建十分复杂 

       2.需要依赖具体的环境创建不同的实例

       3.处理大量具有相同属性的小对象

注意事项:

       1.不能滥用工厂,有时候仅仅是给代码增加复杂度

三、工厂模式的代码实战及总结

下面是以产鞋子,产衣服,运输,厂长,消费者等角色构建起的一个工厂模式

<meta charset="utf-8">
<script>
    //1.工厂应该有厂长 来决定到底执行那一条生产线
    //消费者-》子类
    var gongchang = {

    };
    gongchang.chanyifu = function (arg) {
        this.gongren = 50;
        alert('我们有'+this.gongren);
    }
    gongchang.chanxie = function (arg) {
        alert('产鞋子~')
    }
    gongchang.yunshu = function (arg) {
        alert('运输')
    }
    gongchang.changzhang = function (para) {
        //new js我们应用了单例模式 构造函数模式
        return new gongchang[para]();
    }
    var me = gongchang.changzhang('chanyifu');
    alert(me.gongren)
</script>

下面我们以我们经常见得ajax对象为例,做一个简单的工厂:

<script>
    //这是一个简单的工厂模式
    var XMLHttpFactory = function () {
        
    };
    XMLHttpFactory.createXMLHttp = function () {
        var XMLHttp = null;
        if(window.XMLHttpRequest){
            XMLHttp = new XMLHttpRequest()
        }else if(window.ActiveXObject){
            XMLHttp = new ActiveXObject("Microsoft.XMLHTTP")
        }
        return XMLHttp;
    }
    var AjaxHander = function () {
        var XMLHttp = XMLHttpFactory.createXMLHttp();
    }
</script>

猜你喜欢

转载自blog.csdn.net/qq_41000891/article/details/82842944