设计模式-工厂模式

 设计模式-工厂模式文章封面
概括:

    工厂模式是用来创建对象的一种最常用的设计模式,我们不暴露创建对象的具体逻辑,将逻辑封装到函数中后可以视为工厂,属于创建型模式,工厂模式又分三种: 简单工厂(静态工厂方法)、抽象工厂、工厂方法。


简单工厂:

    又称作静态工厂模式,也是最常用的一种,主要用于创建同一类的对象。

// javascript code-model
class User {
//构造器
constructor(opt) {
this.name = opt.name;
this.permissions = opt.permissio;
}

//静态方法
static getInstance(opt) {
switch (opt) {
case 'superAdmin':
return new User({ name: '超级管理员', permission: ['看帖', '留言', '收藏', '修改文章', '删除文章'] });
break;
case 'admin':
return new User({ name: '管理员', permission: ['看帖', '留言', '收藏', '修改文章'] });
break;
case 'user':
return new User({ name: '普通用户', permission: ['看帖', '留言', '收藏'] });
break;
default:
throw new Error('参数错误, 可选参数:superAdmin、admin、user');
}
}
}

//调用
let superAdmin = User.getInstance('superAdmin');
let admin = User.getInstance('admin');
let normalUser = User.getInstance('user');

    简单工厂只需要传入一个指定的参数,就能返回所需的值,但这也就意味着工程内部的指定值并不能太多,如30个就会让这块函数极难维护。

    总结:简单工厂适合用于,对象少,逻辑不复杂


工厂方法:

    对产品类的抽象使其创建业务主要负责用于创建多类产品的实例

// javascript code-model
var Factory=function(type,content){
if(this instanceof Factory){
var s=new this[type](content);
return s;
}else{
return new Factory(type,content);
}
}

//工厂原型中设置创建类型数据对象的属性
Factory.prototype={
JavaScript:function(content){
console.log('JavaScript值为',content);
},
PHP:function(content){
console.log('PHP值为',content);
},
Python:function(content){
console.log('Python值为',content);
},
}

//测试用例
Factory('JavaScript','我是JS');



    留言 (0)
    音乐封面 点击展开工具栏