设计模式简单汇总

5、设计模式汇总

设计模式包含:模式名,问题,解决方案,结果。

5.1 面向对象设计的原则

单一职责原则:一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。

开闭原则:软件实体应该对扩展开放,对修改关闭。

里氏代换原则:所有引用父类的地方必须能透明的使用其子类的对象。

依赖倒置原则:高层模块不应该依赖底层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节依赖于抽象。(针对接口编程,而不是针对实现编程)

接口隔离原则:客户不应该依赖哪些不需要的接口。

合成复用原则:优先使用对象组合,而不是继承来达到复用的目的。

迪米特法则:一个软件实体应当尽可能少地与其他实体发生相互矛盾。

5.2 设计模式的分类

创建型模式,结构型模式,行为模式

5.3 简单工厂模式

定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。

应用:一个类具有多种构造器。

5.4 工厂方法模式

定义一个用于创建对象的接口,让子类来决定将哪一个类实例化。本质:让一个类的实例化延迟到其子类。

应用:Java的Collection中的iterator()方法即属于这种情况。

5.5 抽象工厂模式

提供创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

应用:

5.6 建造者模式

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

应用:游戏软件中创建角色的扮演者。(力量,魔法,技能等)实现不同的能力。

5.7 适配器模式(包装器模式)

将一个类的接口转换成客户希望的另一个类的接口。让接口不兼容的类一起工作。(目标抽象类,适配器类,适配者类)

应用:开发教务管理系统,对成绩进行排序和查找,在不利用算法库的情况下,利用对象适配器模式来实现。

5.8 桥接模式

桥接模式将抽象部分与它的实现部分解耦,使得两者都能独立变化。

说明:桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联取代了传统的多层继承,将类之间的静态继承关系转换为动态的对象组合关系,提高系统的灵活性,易于扩展,有效控制系统中类的个数。

5.9 组合模式

将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得客户对单个对象和复合对象的使用具有一致性。

应用:使用组合模式设计杀毒软件的框架。(对文件杀毒包括:图像文件,文本文件等不同类型杀毒)

5.10 装饰模式

动态地给一个对象添加一些额外的职责。就扩展功能而言,装饰模式比生产子类方式更为灵活。

说明:装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。

5.11 代理模式

为其他对象提供一个代理以控制对这个对象的访问。

说明:当用户无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象需要实现相同的接口。

根据代理类使用的目的不同,可以将代理类区分为:保护代理,远程代理,虚拟代理,缓冲代理。

5.12 解释器模式

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

说明:解释器模式设计到文法规则和抽象语法树。

5.13 观察者模式

定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。属于对象行为模式。

5.14 策略模式

定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。该模式使得算法的变化可以独立于使用它的客户。

特点:策略模式用于算法的自由切换和扩展。实现算法定义和算法使用的分离,它通过继承和多态的机制实现对算法的使用和管理。

猜你喜欢

转载自blog.csdn.net/qq_30507287/article/details/78071519