1、设计模式总结
设计模式总共23个,但是常用的不到10个,下面就把这23个设计模式进行整理归类,具体如下:
1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
3)行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、职责链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
2、行为型设计模式
1)策略模式:定义一系列的算法,把他们一个个封装起来,并且可以使他们可相互替换,使得算法可独立于使用它的客户而变化。
2)模板方法模式::定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
模板方法模式由一个抽象类组成,这个抽象类定义了需要需要覆盖的可能有不同实现的面板方法,每个从这个抽象类派生的具体类将为此模板实现新的方法。
3)观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,是他们能够自动更新自己。(也叫做 发布-订阅模式)
4)迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
迭代模式的关键思想是将对列表的访问和遍历从列表对象中分离出来并放入一个迭代器对象中,迭代器类定义了一个访问该列表元素的接口。迭代器对象负责跟踪当前元素,并且知道哪些元素已经遍历过了。
5)职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。
有多个对象可以处理一个请求,哪个对象处理该请求事先并不知道,要在运行时刻自动确定,这个时候最好的方法就是让请求发送者与具体处理者进行分离。让客户在不明确知道指定接收者的情况下,提交一个请求,然后由所有能处理这请求的对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
6)命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
将调用操作对象与知道如何实现该操作的对象解耦,可以在不同时刻指定、排列和执行请求。