设计模式介绍

Posted by KalosAner on November 28, 2024

设计模式介绍

设计模式(一)

设计模式(二)

设计模式(三)

设计模式(四)

设计模式(五)

设计模式(六)

一、简介

面向对象的设计模型的目的是为了增加可复用性。

客户需求、技术平台、开发团队和市场环境的变化导致软件设计变得很复杂。为了解决这种复杂性有以下两种方法:分解抽象

面向对象设计有八大原则(比具体的设计模式更重要):

1、依赖倒置原则(DIP,Dependence Inversion Principle)

高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定) 。

抽象(稳定)不应该依赖于实现细节(变化) ,实现细节应该依赖于抽象(稳定)。

2、开放封闭原则(OCP,Open Close Principle)

对扩展开放,对更改封闭。

类模块应该是可扩展的,但是不可修改。

3、单一职责原则(SRP,Single Responsibility Principle)

一个类应该仅有一个引起它变化的原因。

变化的方向隐含着类的责任。

4、里氏替换原则(LSP,Liskov Substitution Principle)

子类必须能够替换它们的基类(IS-A)。

继承表达类型抽象。

5、接口隔离原则(ISP,Interface Segregation Principle)

不应该强迫客户程序依赖它们不用的方法。

接口应该小而完备。

6、迪米特法则(Law of Demeter,LoD)

也称为最少知识原则(Least Knowledge Principle,LKP),一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的这么多public方法,我就调用这么多,其他的我一概不关心。

个人理解可以使用封装来创建对象之间的分界层,让设计者可以在分界层的一侧进行修改,而不会对另一侧产生不良的影响,从而实现层次间的松耦合。

7、优先使用对象组合,而不是类继承

类继承通常为“白箱复用”,对象组合通常为“黑箱复用”。

继承在某种程度上破坏了封装性,子类父类耦合度高。

而对象组合则只要求被组合的对象具有良好定义的接口,耦合度低。

8、针对接口编程,而不是针对实现编程

不将变量类型声明为某个特定的具体类,而是声明为某个接口。

客户程序无需获知对象的具体类型,只需要知道对象所具有的接口。

减少系统中各部分的依赖关系,从而实现“高内聚、松耦合”的类型设计方案。

二、23 种设计模式

23 种设计模式可以分为几类:

从目的上看:

创建型:解决需求变化对对象创建的冲击

结构型:解决需求变化对对象结构的冲击

行为型:解决需求变化对多个类交互责任划分的冲击

从范围上看:

类模式处理类与子类的静态关系。

对象模式处理对象间的动态关系。

除了 23 中设计模式之外还有一种 J2EE 设计模式,它是一组为企业级应用程序开发设计的模式集合,旨在解决常见的问题并促进代码的复用性、灵活性和可维护性。它们主要应用于分布式系统和企业应用的开发中,帮助开发者处理复杂的架构问题,比如性能优化、资源管理、事务处理等。

序号 模式 & 描述 包括
1 创建型模式
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
工厂模式(Factory Pattern)
抽象工厂模式(Abstract Factory Pattern)
单例模式(Singleton Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)
2 结构型模式
这些模式关注对象之间的组合和关系,旨在解决如何构建灵活且可复用的类和对象结构。
适配器模式(Adapter Pattern)
桥接模式(Bridge Pattern)
过滤器模式(Filter、Criteria Pattern)
组合模式(Composite Pattern)
装饰器模式(Decorator Pattern)
外观模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)
3 行为型模式
这些模式关注对象之间的通信和交互,旨在解决对象之间的责任分配和算法的封装。
责任链模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解释器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
备忘录模式(Memento Pattern)
观察者模式(Observer Pattern)
状态模式(State Pattern)
空对象模式(Null Object Pattern)
策略模式(Strategy Pattern)
模板模式(Template Pattern)
访问者模式(Visitor Pattern)
4 J2EE 模式
这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。
MVC 模式(MVC Pattern)
业务代表模式(Business Delegate Pattern)
组合实体模式(Composite Entity Pattern)
数据访问对象模式(Data Access Object Pattern)
前端控制器模式(Front Controller Pattern)
拦截过滤器模式(Intercepting Filter Pattern)
服务定位器模式(Service Locator Pattern)
传输对象模式(Transfer Object Pattern)