这个会员需求这样该怎么设计

什么是设计模式,为什么要使用设计模式?

这次遇到了什么问题?

有一个需求要求普通用户和会员用户启动设备的时候时间、计费和使用次数不一样。

    普通用户使用设备按时长计费,比如一分钟1元钱,可以随便使用反正按时长计费。 会员用户每天可以免费使用45分钟,时间到了就停止,下一次启动设备就跟普通用户一样。 会员用户中又分为月卡会员,年卡会员等。

这个问题怎么去设计解决了?

第一时间想到的就是直接判断是什么用户,会员还是普通用户,是月卡会员还是年卡会员…这样走下去。

但是这样存在什么问题呢 ?

    if判断很多嵌套,逻辑理解复杂度很大。 以后拓展的时候不好拓展,比如又加了一个某某卡用户,又得在哪里加判断逻辑。 会员用户下又分了月卡和年卡,那以后再分卡呢?月卡和年卡的权益或者功能不同的情况,比如年卡可以用60分钟。

上面的这些问题是我当时想到的,虽然需求没有,过度设计是不好的。但是如果真按这样走下去有什么好点的方法让代码具有好的扩展性。

用了什么设计模式?

    用户分了普通用户和会员用户。感觉可以用策略来解决。 会员用户下面又有月卡会员和年卡会员,那么后续还可能在往下分。这里又是策略。 还有一点,需要先知道是不是会员,是的话,再看是不是什么类型的会员一直往下走。这里像不像filter过滤器的作用?感觉可以用责任链。

像不像这样一棵树:

这样的结构使用一种责任树的算法设计模式 。

什么是策略设计模式,什么是责任链设计模式?

**主要解决:**职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。

**主要解决:**在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。

责任树是什么样的?

经验分享 程序员 微信小程序 职场和发展