简单工厂模式
简单工厂模式可以理解为:现有一个生产 东东 的 工厂。这里的“东东”就是一个实体类,这里的“工厂”就是我们外抛的一个接口。从“消费者(想要得到一个‘东东’的人)”的角度来看,我不需要知道你这个“工厂”是怎么生产“东东”的,或者说“工厂”生产什么“东东”是由“消费者”决定的。
下面是简单工厂模式的一个简单运用:
function Person(options) { // 东东
this.name = options.name;
this.permission = options.permission;
}
function PersonFactory(role) { // 工厂
switch (role) {
case 'admin':
return new Person({ name: 'Admin', permission: ['/index', '/edit', '/admin'] });
case 'editor':
return new Person({ name: 'Editor', permission: ['/index', '/editor'] });
case 'visitor':
return new Person({ name: 'Visitor', permission: ['/index'] });
default:
throw new Error('参数错误,可选:admin | editor | visitor');
}
}
let admin = PersonFactory('admin'); // 消费
let editor = PersonFactory('editor');
let visitor = PersonFactory('visitor');
// let user = PersonFactory('user'); // Error: 参数错误,可选:admin | editor | visitor
console.log(admin);
console.log(editor);
console.log(visitor);
// console.log(user);
如果不用简单工厂模式你可能会写出这样的代码:
// 你需要为每一个实体创建一个实体类
let admin = new Admin();
let editor = new Editor();
let visitor = new Visitor();
笔者也是刚学设计模式,可能是由于我平时写代码的时候就是这种(简单设计模式)写法,导致我至今不知道简单工厂模式是什么东西?前面是笔者通过学习后的简单理解,不知对错与否,愿不吝赐教!