一、前言
设计模式是软件编程提升水平的一个重要技能,而且在软件攻城狮中考试里,也是比不可少的,所以小编总结了历年的软考真题,总结了设计模式。希望可以给您带来帮助。
二、行为型
行为型一共分为5种,记忆方式小编通过一个故事串起来:“一个人根据工厂的原型创建工厂”By Chuan.Wang.
单例:实例对象只有一个。
工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类。
原型:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
创建者:当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时。
抽象工厂:提供一个创建一系列相关或相互依赖对象的接口而无需指定具体的类。 允许客户创建对象家族,而无需指定他们具体的类。
三、创建型
观察者在观察站,发现访问者是一个黑客,报告给Boss,Boss让终结者*C破译命令, 中介 C用了各种策略来解释这个链式的命令,还用到迭代器来解释,然后记录访问者的状态,形成模板*为后人学习。 By Chuan.Wang.
观察者:定义对象间一种一对多的依赖关系,当一个对象的状态发生变化的时候,所有依赖于他的对象都得到通知并自动更新。让对象能够在状态改变时被通知。
访问者::表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。
中介者:一个处于众多对象,并恰当的处理众多对象之间相互之间的联系的角色。和观察者相互竞争。
策略:封装可以互换的行为,并使用委托来决定要使用哪一个。
解释器:定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。
责任链:使多个对象都有机会处理请求,从而避免请求收发双方之间耦合关系,并沿着链传递该请求,知道一个对象处理他为止。
命令:将一个请求封装为一个对象,从而是用户可用不同的请求对客户进行参数化。用途:请求排队,记录请求日志,支持可撤销操作。
迭代器:在对象的集合之中游走,而不暴露集合的实现。
备忘录:当你需要让对象返回之前的状态时候,可以使用。在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
状态:封装了基于状体的行为,并使用委托在行为之间切换。
模板方法:定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。
四、结构型
结构型可以总结为“桥外租想带装饰”,By France。
桥接:将抽象部分与现实部分分离→接口与实现分离。是接口和实现的变化不产生相互影响。
外观:简化一群类的接口。
组合:部分——整体。用户对单个对象和组合对象使用具有一致性。
享元:某一个类的一个实例能用来提供许多“虚拟实例”。
代理:包装对象,以控制对此对象的访问。
装饰:一个对象添加更多功能而不使用子类,动态给对象添加功能,为一个对象添加更多的功能而不使用子类。
适配器:讲已有类的接口转换成目标接口兼容。
五、六个原则
【开闭原则】
面向对象的可复用设计的基石,指一个软件实体应当对拓展开放,对修改关闭。
【里氏代换原则】
任何基类对象可以出现的地方,子类对象一定可以出现。
【依赖倒转原则】
依赖于抽象而不依赖于实现,或者说要针对接口编程,而不要针对实现编程。
【单一职责原则】
不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。
【接口隔离原则】
客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
【迪米特法则】
一个对象应该对其他对象保持最少的了解。
六、小结
通过对比分析,自己画设计模式的类图,在应用过程中要把这些设计模式用到自己的项目中,让项目更加的灵活多变,加油!在软考中,还是要多多的温习这些定义,毕竟是应试考试,还是要多多的了解,但其中获得的东西就是我们自己的收获了。