策略模式:
策略模式(Strategy):它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
解释说明:
1.流程就是:定义一个策略抽象类--各个策略算法继承它--用Context类下连策略类,上连客户端
2.其实策略模式就是用相同的方式调用了所有的算法,减少了各种算法类与算法类之间的耦合。
观察者模式:
观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化是,会通知所有观察者对象,使它们能够自动更新自己。
解释说明:
1.流程是:定义通知者接口--各个通知者类实现它--定义观察者抽象类--各个观察者继承
2.这个模式的实现就是通过通知者中一个循环遍历数组更新的方法,把各个观察者添加进去就好。
3.这个和QQ群的功能有些像,所有添加进群的人,当管理员发布一条消息,他们都可以收到并作出自己的反应
状态模式:
状态模式(State):当一个对象的内在状态改变是允许改变其行为,这个对象看起来像是改变了其类。
解释说明:
1.流程是:定义一个状态抽象类接口--不同的状态类实现它
2.其实状态模式就是把一个大型的if-else语句的拆分
3.通过把各种状态都变成一个个子类,减少了之间的耦合性
备忘录模式:
备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
解释说明:
1.流程是:建一个备忘录类--建一个管理者类--发起人类实例化备忘录类给管理者类
2.备忘录模式就是将某一时刻的数据保存在另一个类中,相当于一个备份
3.不过虽然是发起人创建出的备忘录类,但是移交给管理者来保存它
迭代器模式:
迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
解释说明:
1.过程是:迭代器抽象类--具体迭代器继承它--聚集抽象类--具体聚集抽象类继承
2.其实就是实现了一个循环遍历的功能吧
命令模式:
命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
解释说明:
1.过程是:定义抽象命令类--各个具体命令继承--服务员类将命令存放到list中
2.这个就和点菜是一样的,把具体做哪些菜形成一个单子,这些单子排着队一个个去被执行
职责链模式:
职责链模式(Chain of Responsibility):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
解释说明:
1.过程是:定义一个抽象管理者类--各个管理者继承它(低级管理者如果无法执行就递交给上级)
2.职责链模式解决了大量分支的造成的各种问题
3.通过将对象的请求依次传递直到解决,而且对象之间的耦合度比较小
中介者模式:
中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
解释说明:
1.定义中介者抽象类--具体的中介者继承--定义同事抽象类--具体的同事继承
2.不同同事类的方法在中介者中实现
3.中介者模式处理的就是多对多的实现,把分散在各个类的交互集中处理
4.比较像多年前的转接台的繁忙工作人员,我们只需要打到那里,然后就可以和想要的人员通信
解释器模式:
解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
解释说明:
1.定义翻译抽象类--不同的翻译方式类继承
2.就是一个翻译器,把我们一些固定语法的句子翻译成我们想要的形式,得到我们想要的结果。
访问者模式:
访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
解释说明:
1.定义反应抽象类--各种状态继承--定义人类-- 不同人类对象继承
2.访问者模式是建立在数据结构相对稳定的结构
3.而且新加的操作会访问各元素
4.但是访问者模式比较晦涩难懂,真正我们需要的时候我们才会使用,一般不用
总结:
这些模式都属于行为型模式,涉及到算法和对象之间的职责分配以及通信方式。
目前产生的共鸣还不是很多,所以在这里先做简单概括,了解每种模式的基本使用流程,以及它的用途。
以后有了深入的研究在做进一步的总结。
——本学习总结参考书籍为《大话设计模式》作者:程杰