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

    作用

    主要用来创建对象

    简单工厂模式:用于创建单一的对象

    方法工厂模式:用于创建重复创建对象

    1.简单工厂模式

       /**
             简单的工厂函数
                 1.声明工厂函数 createPerson
                 2.通过工厂函数来创建对象
             * */
            function createPerson(name) {
                var o = {};//空对象
                //在空对象中添加方法
                o.name = name;
                o.getName = function () {
                    console.log(this.name)
                }
                //返回包装好的对象
                return o
            }

            //使用函数
            var preson1 = createPerson("zhang san ");
            preson1.getName()
            console.log(preson1.name)
     
    2.方法工厂模式
     /**
            方法工厂模式
            1.创建多个实例(构造函数)

         **/
        function Person(name) {
            this.name = name;
        }
        Person.prototype.getName = function () {
            console.log(this.name)
        }
        function Car(model) {
            this.model = model
        }
        Car.prototype.getModel = function () {
            console.log(this.model)
        }

        function create(type, param) {
            // return new this[type](param);
            /*
             安全模式 对this进行判断
            */
            if (this instanceof create) {//instanceof  前面是个对象  后面是个构造函数  用于判断后面的构造函数的原型是否存在前面的对象的原型链中
                return new this[type](param)
            } else {
                return new create(type, param)
            }
        }
        create.prototype = {
            person: Person,
            car: Car
        }
        var person1 = new create("person", "zhang san");

        var car1 = create("car", "benz");
        person1.getName()
        car1.getModel()
        /*
        创建person1时 创建了一个新的对象
        new create("person", "zhang san") ->{
            __proto__:create.prototype
        }
        当前对象的原型链指向工厂的原型对象
        person1=new this[type](param) = new Preson("zhang san"); ->{
            __proto__ : Person.prototype,
            name:'zhang san'
        }
        */
  • 相关阅读:
    Linux实用命令之git-svn
    Linux实用命令之xdg-open
    记一个logrotate的配置文件权限问题
    日常开发技巧:x11-forward,使用远程机器的gui程序
    【机器学习】PCA
    【PyTorch】Tricks 集锦
    【Python】itertools之product函数
    强化学习——值迭代和策略迭代
    PyTorch中MaxPool的ceil_mode属性
    猫狗识别——PyTorch
  • 原文地址:https://www.cnblogs.com/JSWBK/p/13862820.html
Copyright © 2011-2022 走看看