设计模式学习总结
设计模式学习总结
一、设计模式的分类
总体来说设计模式分为三大类:
创建型模式:
Singleton模式解决的是实体对象个数的问题。除了Singleton之外,其他创建型模式解决的都是new所带来的耦合关系。
FactoryMethod,AbstractFactorv.Builder都需要一个额外的工厂类来负责实例化“易变对象 而Prototype则是通过原型(一个特殊的工厂类)来克隆“易变对象”。
如果遇到“易变类”,起初的设计通常从FactoryMethod开始:当遇到更多的复杂变化时,再考虑重构为其他三种工厂模式。
,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式:
Adapter模式注重转换接口,将不吻合的接口适配对接Bridge模式注重分离接口与其实现,支持多维度变化Composite模式注重统一接口,将“一对多”的关系转化为“一对一”的关系
Decorator模式注重稳定接口,在此前提下为对象扩展功
D Facade模式注重简化接口,简化组件系统与外部客户程序的依赖关系
Flyweight模式注重保留接口,在内部使用共享技术对对象存储进行优化
Proxy模式注重假借接口,增加间接层来实现灵活控制。
,共7种:适配器模式(Adapter),桥接模式(Bridge),组合模式(Composite),装饰器模式(Decorator),外观模式(Facade),享元模式(Flyweight),代理模式(Proxy)。
行为型模式:
Template Method模式封装算法结构,支持算法
子步骤变化
Strategy模式注重封装算法,支持算法的变化
State模式注重封装与状态相关的行为,支持状态
的变化
Memento模式注重封装对象状态变化,支持状态
保存/恢复
Mediator模式注重封装对象间的交互,支持对象
交互的变化
,共11种:Template Method模版方法、Command命令、Interpreter解释器、Mediator中介者、Iterator迭代器、Observer观察者、Chain of Responsibility职责链、Memento备忘录、State状态、Strategy策略、Visitor访问者。

二、设计模式的六大原则
1、开放封闭原则(Open Close Principle):对扩展开放,对修改关闭。
2、里氏替换原则(Liskov Substitution Principle):任何基类可以出现的地方,子类一定可以出现。
3、依赖倒置原则(Dependence Inversion Principle):针对接口编程,依赖于抽象而不依赖于具体。
4、接口隔离原则(Interface Segregation Principle):拆分大接口,使用多个隔离接口,降低类间耦合。
5、迪米特法则(最少知道原则)(Demeter Principle):最少知道原则,一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
6、单一职责原则(Single Responsibility Principle):不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,否则就应该把类拆分。
三、23种设计模式
1.创建型模式(5种)
(1)工厂方法模式:创建同一接口的封装对象。
(2)单例模式:类只实例化一次
- 建造者模式:用来创建复合对象,隐藏实现细节。
(4)原型模式:对象复制,减少对象创建。
(5)抽象工厂模式:是对工厂模式的扩展,对工厂进行更高层的抽象,便于更换添加工厂和实现类。
2.结构型模式(7种)
(1)适配器模式:类、对象、接口适配器,将接口转换成另一个目标接口,消除不兼容问题。
(2)装饰器模式:给对象添加动态的添加功能。
(3)代理模式:用另一个类来代替原对象执行操作。
(4)外观模式:将多个类放到一个类中,降低类间耦合度。
(5)桥接模式:事物内部抽象类具体实现不同,相同方法产生不同结果,分离抽象和实体。 (6)组合模式:部分整体的结构,类似树形结构
(7)享元模式:对象共享池
3.行为型模式(11种)
(1)策略模式:相同接口,不同实现类,同一方法结果不同,实现策略不同。
(2)模板方法模式:父类执行子类功能,但由子类实现。
(3)观察者模式:子类的动作,观察者能即使发现做出反应。
(4)迭代器模式:顺序遍历对象。
(5)职责链模式:每个类持有下个对象的引用,形成链条。
(6)命令模式:调用者通过中间类让接受者执行指令。
(7)备忘录模式:备份模式,记录自生参数,需要的时候恢复。
(8)状态模式:改变状态参数,相同方法不同实现
(9)访问者模式:通过接收访问者类,让访问者类改变主类的行为。
(10)中介者模式:通过中介者类管理另外几个类的关系。
(11)解释器模式:解释一种模式,比如正则表达式的解释器。
设计模式建立在对系统变化点的基础上进行,哪里有变化点,哪里应用设计模式。设计模式应该以演化的方式来获得,系统的变化点往往是经过不断演化才能准确定位。
不能为了模式而模式,设计模式是一种软件设计的软力量,而非规范标准。不应夸大设计模式的作用。
浙公网安备 33010602011771号