| 设计原则
六大设计原则:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。详细理解在设计模式学习第一篇中。
| 设计模式
行为型模式主要分为以下11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
而其中策略模式、模板方法模式、责任链模式、状态模式、命令模式比较相似,所以先分析他们。
| 模式详解
策略模式:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。
模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
责任链模式:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
命令模式:将请求封装成对象,使请求者和接收者分开,他们通过命令来沟通,同时可以对命令进行管控,可扩展实现操作的撤销、恢复、队列等功能。
| 分析总结
总结:
a、状态模式使状态的改变,引起了行为的改变(改变了状态相关的引用对象),就像水的状态,固态,液态,气态,这三种状态会引起水的行为的变化,注重的状态的转变。
b、策略模式则是因为决策选择不同的策略实现,实现策略的动态变化。与桥接模式比较像。策略模式是在算法层次的解耦,而桥接则是多个体系之前的解耦。
c、模板方法模式主要针对的是有固定的流程情况。比如照顾猫或狗,假如固定流程都是添水加猫粮(狗粮)、铲屎。流程相同抽取出来。添水和铲屎也是一样。那么子类只用实现加粮这个方法。当然铲的屎不一样,也可以在各自的子类中实现。
d、责任链模式则是一个请求有多个处理。根据情况判断。现在把判断分开到各个责任人。每个责任人只用知道他的下级是谁,不用知道上级。实现了解耦和扩展。
e、命令模式则是为了把请求者和执行者解耦,并且同时也方便了对操作的控制。
f、行为模式解决的问题主要是:对象与行为之间的解耦。
Java程序员日常学习笔记,如理解有误欢迎各位交流讨论!
领取专属 10元无门槛券
私享最新 技术干货