常用设计模式,以及设计模式应用的场景(二)

五.ChainOfResponsibility(责任链模式)
应用场景:Filter、Intercepter
我所做的公司项目集中it业务处理系统,统一任务发起使用责任链的模式。
tank大战中的碰撞检测(子弹碰tank,子弹碰墙壁,以及tank和墙壁),使用责任链模式。tank碰撞检测的责任链模式.gitee

Filter接口,具体的Filter实现类自己编写,在聚合到FilterChain中,调用的FilterChain的doFilter方法,于此同时我们可以根据doFilter方法的返回值进行responsibilty是否执行的控制,也可由filterChain自己控制。
Servlet中的Filter接口就是有FilterChain自身控制的,并且实现了,一个ChainOfResponsibility过滤request和response,并且对于Request的正向过滤,对于Response反向过滤。具体的实现是由filterChain自己控制的。
六.Decorator(装饰器模式)
项目中应用的Decorator模式很少
tank大战项目中,对于主站tank的fireStrategy中bullet进行装饰,添加子弹边框以及字段尾巴。代码地址:Decorator设计主站tank的bullet.gitee
Decorator装饰器模式:最终要的是,被装饰的对象和装饰器对象可以各自发展,以及装饰器对象也可以相互装饰(想要实现这个,要求装饰器抽象类继承被装饰对象,这样就可以装饰器对象相互进行装饰)。Decorator实际应用的比较少。框架中的IO流所使用的就是Decorator。
在这里插入图片描述
七.Observer(观察者模式,Listener)
Observer模式:对一事件的发生的响应,我们平时开发中碰到的钩子函数,就是这种模式。
netty中很多都是使用的Observer,netty中的方法很多都是异步的,所以我们一般需要针对我们调用异步的地方,“放置一个机器人”,等待结果返回,再由线程池中的线程针对其处理。
代码中的应用:tank大战中对于主站tank按下ctrl按键事件,完成开火功能(纯粹是为了联系Observer模式)。针对主站tank按下ctrl键,完成开火功能.gitee

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值