享元模式
就是共享元数据,比如共享内存(主要考虑内存而非效率),相同的数据共享使用。
策略模式
不同策略分开处理,避免出现大量if...else
或者switch...case
。
比如:
class User {
constructor(type) {
this.type = type;
}
buy() {
if (this.type === 'ordinary') {
console.log('普通用户购买');
} else if (this.type === 'member') {
console.log('会员用户购买');
} else if (this.type === 'vip') {
console.log('vip用户购买');
}
}
}
let u1 = new User('ordinary');
u1.buy();
let u2 = new User('vip');
u2.buy();
// 普通用户购买
// vip用户购买
把上面大量的if...else
可以改成:把不同用户单独做一个类来处理,因为js里面没有接口的概念。需要用到哪个用户就初始化这个用户的类就可以了。
class OrdinaryUser {
buy() {
console.log('普通用户购买');
}
}
class MemberUser {
buy() {
console.log('会员用户购买');
}
}
class VipUser {
buy() {
console.log('vip用户购买');
}
}
let u1 = new OrdinaryUser();
let u2 = new MemberUser();
let u3 = new VipUser();
u1.buy();
u2.buy();
u3.buy();
// 普通用户购买
// 会员用户购买
// vip用户购买