这三种模式都是对if else的优化,在大量if else对性能影响可能微乎其微,但是不便于阅读和debug。实际使用,这三者具体区别是什么很重要。

首先策略模式最为灵活,也是我使用过的,Java中比较常用的方法。首先将代码块的行为抽象为一个接口,然后将写在一个行为类里。再建立一个工厂类,内置一个hashmap,key为String(方法名),value则使用双层校验锁创建行为对象(也可不用单例),每次使用传入方法名从工厂里取。

状态模式和责任链很像,区别在于状态模式对象自己知道其下一个处理的对象是谁,在编译时便设定,调用方法时,状态自动流转,客户不直接和状态交互。

责任链模式中的各个对象并不指定其下一个处理的对象到底是谁,在不同场景,程序员可以自行组装责任状态链,直到整个逻辑被某个责任类处理返回或者链条结束。

posted on 2021-12-25 21:41  柴刀叨叨叨  阅读(496)  评论(0)    收藏  举报