这边文章告诉你如何在弱类型语言上,优雅地声明变量。javascript
@(js设计模式)java
if...else
或者 switch...case
class User { constructor (user) { this.user = user } buy () { const user = this.user // 错误写法一 if (user === 'vip') { console.log('会员购买') } if (user === 'normal') { console.log('普通的用户') } if (user === 'superVip') { console.log('超级会员') } } } const vip = new User('vip') vip.buy() const normal = new User('normal') normal.buy() const superVip = new User('superVip') superVip.buy()
class User { constructor (user) { this.user = user } buy () { const user = this.user switch (user) { case 'vip': console.log('会员购买') break; case 'normal': console.log('普通的用户') break; case 'superVip': console.log('超级会员') break; default: console.log('普通的用户') break; } } } const vip = new User('vip') vip.buy() const normal = new User('normal') normal.buy() const superVip = new User('superVip') superVip.buy()
按照多少个不一样的用户来分开多少个不一样策略设计模式
class Vip { buy() { console.log('会员购买') } } class Normal { buy() { console.log('普通的用户') } } class SuperVip { buy() { console.log('超级会员') } } const vip = new Vip() vip.buy() const normal = new Normal() normal.buy() const superVip = new SuperVip() superVip.buy()
优化(推荐)优化
为何优化?一般状况下尽可能少声明类(简化也不要 开示例代码多少,要看实现代码应用多少)this
按照用户类型,用户购买内容分红两个策略设计
const UserType = { Vip: 'vip', Normal: 'normal', SuperVip: 'superVip' } const UserTypeName = { [UserType.Vip]: '会员购买', [UserType.SuperVip]: '超级会员', [UserType.Normal]: '普通的用户' } class User { constructor (user) { this.user = user } buy () { console.log(UserTypeName[this.user]) } } const vip = new User(UserType.Vip) vip.buy() const normal = new User(UserType.Normal) normal.buy() const superVip = new User(UserType.SuperVip) superVip.buy()