策略模式
主要解决多个 if...else
或者 switch...case
的问题。把每种情况分成多种策略,分别实现。
ts
class User {
private type: string
constructor(type: string) {
this.type = type
}
buy() {
const { type } = this
if (type === 'ordinary') {
console.log('普通用户购买')
}
if (type === 'member') {
console.log('会员购买')
}
if (type === 'vip') {
console.log('VIP 用户购买')
}
}
}
const u1 = new User('ordinary')
u1.buy()
const u2 = new User('member')
u2.buy()
const u3 = new User('vip')
u3.buy()
使用策略模式
ts
interface IUser {
buy: () => void
}
class OrdinaryUser implements IUser {
buy() {
console.log('普通用户购买')
}
}
class MemberUser implements IUser {
buy() {
console.log('会员购买')
}
}
class VipUser implements IUser {
buy() {
console.log('VIP 用户购买')
}
}
const u1 = new OrdinaryUser()
u1.buy()
const u2 = new MemberUser()
u2.buy()
const u3 = new VipUser()
u3.buy()