首页 > 其他 > 详细

设计模式之工厂模式

时间:2021-01-24 00:51:09      阅读:39      评论:0      收藏:0      [点我收藏+]

工厂模式

简单工厂模式

  • 批量生产对象的时候没有必要一个一个对象去创建,减少重复性代码。
  1. 在函数内部创建一个空对象
  2. 再给这个对象添加属性和方法
  3. 将包装好的对象返回处理啊
function createPerson(name) {
    const o = {};
    o.name = name;
    o.getName = function() {
        console.log(this.name);
    }
    return o;
}

const person1 = createPerson(‘lazy‘);
person1.getName(); // lazy
console.log(person1.name); // lazy

工厂方法

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) {
    if(this instanceof create) { // 判断后面的构造函数的原型,是不是前面对象的原型链里
        return new this[type](param);
    }else {
        return new create(type, param);
    }
}

create.prototype = {
    person: Person,
    car: Car
}
const person1 = new create(‘person‘, ‘张三‘);
person1.getName(); // 张三
const car1 = create(‘car‘, ‘Benz‘);
car1.getModel(); // Benz
  • new create(‘person‘, ‘张三‘) 发生了什么?

    1. 将 person1 的 proro(原型链) 指向了 create 的 prototype(原型)
  • new thistype 发生了什么?

    1. new thistype = new Person(‘张三‘)
    2. 将 create 的 proro(原型链) 指向了 Person 的 prototype(原型)

设计模式之工厂模式

原文:https://www.cnblogs.com/landuo629/p/14318455.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!