设计模式 策略模式

旧时模样 提交于 2019-12-04 13:02:56
策略模式:不同策略分开处理,避免出现大量 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 用户购买');
        }
    }
}

// 测试
var u1 = new User('ordinary');
u1.buy();
var u2 = new User('ordinary');
u2.buy();
var u3 = new User('ordinary');
u3.buy();

这里可能有大量的 if...else。功能肯定没有问题,设计模式的存在不是解决bug,是提高设计能力,提高拓展性的

 

class OrdinaryUser {
    buy() {
        console.log('普通用户购买');
    }
}

class MemberUser {
    buy() {
        console.log('会员用户购买');
    }
}

class VipUser {
    buy() {
        console.log('vip 用户购买');
    }
}

// 测试
var u1 = new OrdinaryUser();
u1.buy();
var u2 = new MemberUser();
u2.buy();
var u3 = new VipUser();
u3.buy();

这里针对不同的用户,不同的类



设计原则验证
不同策略,分开处理,而不是混合在一块
符合开放封闭原则
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!