《设计模式之禅》读书笔记-策略模式、享元模式、工厂模式、门面模式混用

前一篇讲的什么是策略模式,策略模式的优缺点,在实际应用中肯定不能这么简单的应用,需要结合其他模式混用。比如结合门面模式解决所有策略类都需要对外暴露的缺点,使用享元模式解决多次创建实例的缺点等。

此篇是根据工作总结而来,业务需求改进与升级需要我们提供一个推送的消息系统,经过选型确定使用Netty与WebSocket做技术支撑。Netty的API简单统一,直接继承它的SimpleChannelUpstreamHandler(4.0以下)或SimpleChannelInboundHandler(4.0以上)通过重写messageReceived方法即能获取信息流,而我们所有的业务逻辑都要在这个方法里面做处理。现有的需求是客户能登录、登出、修改各种状态,在准备的时候能够推送各种消息(卡片消息、等简短的消息),很明显,这个要用策略模式来做,登录、登出、状态切换、消息推送等是我们的具体策略类,需要用到策略枚举,来对应消息选择用哪个策略类来处理,简单的类图如下:

ss

但是实际上这样做毫无艺术感。

经过优化之后的类图如下:

任务中心策略模式

增加了两个类,SubscribeServiceFactory以及EventService,我们在初始化的时候直接用spring实例化各个策略的xxxHandler(享元模式),EventService提供了俩方法,subscribe与publish,SubscribeServiceFactory通过调用subscribe订阅xxxHandler的策略处理类(即在EventService保存对应的引用实际上这是一个key-value对,key是策略枚举的值,value是对应的策略类),publish是对策略枚举的一些封装使用,使其找到对应的策略类(门面模式)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值