栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

这个问题我确实想了很久,也想把自己理解的设计模式和为什么要用它写出来。关注公众号后面继续讨论这个问题。

这次遇到了什么问题?

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

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

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

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

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

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

用了什么设计模式?

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

像不像这样一棵树:

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

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

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

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

责任树是什么样的?

欢迎关注公众号

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/733125.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号