java设计模式

来源:互联网 发布:vb mac版 编辑:程序博客网 时间:2024/05/29 05:06

              JAVA设计模式

面向对象程序设计的6大原则

  1. 单一职责原则  (SRP) one class ,one function

每一个类对外只提供一种职责(高内聚,低耦合)

优点:SRP原则可以消除耦合,减少因需求变化引起的代码僵化。

注意:一个类仅 有一个因其变化的原因

      需求没有变化,使用SRP不明智

      需求发生变化,使用SRP进行代码重构

  1. 里氏替换原则LSP

同一个继承体系中的对象因该有共同的行为特征。

只要父类出现的地方,子类就能出现,而且替换为子类不会出错

子类出现的地方,替换为父类是可能出现问题(继承的基石)

良好的继承原则 1.子类必须完全实现父类

               2.子类可以有自己的特性

               3.覆盖或者实现父类的方法时输入参数可以被放大

               4.重写或实现父类方法时,输出方法可以被缩小

3.依赖注入原则DIP

 类的实现依赖于其他类,这些其他类应为抽象类,不是具体的实现类。

 因为依赖于抽象类方便代码的复用与修改,而具体类增大了代码的开销。

 依赖注入的三原则(DIP

  1. 通过构造函数传递依赖对象
  2. 通过setter方法传递依赖对象
  3. 接口声明实现依赖对象

 

4接口分离原则ISP)即接口专职专用

一个接口不需要提供无关的行为,一个接口只应提供一个对外的接口

 

单一职责原则与接口分离原则区别

单一职责,主要体现在业务逻辑层上的划分

接口分离原则:接口中方法尽可能少,针对一个模块尽量有用。

类与接口的关系

类需要对接口中的抽象方法进行重写,通过对象调用类中的接口方法。

接口是类继承的延伸,通过接口可以对类功能进行扩展(多功能集线器)

 

5.迪米特原则LOD) 编程时,尽可能降低对象之间的耦合性

一个对象应当对其他对象尽可能少的了解。

迪米特原则注意:

  1. 类的创建上,应该创建有弱耦合的类
  2. 类的结构上,每一个类都应该尽量降低成员访问权限。
  3. 类的设计上,应该尽量设计成不变类
  4. 对其他类对象的引用上,一个对象应该尽量降低对其他对象的引用
  5. 尽量降低类的访问权限
  6. 谨慎使用序列化功能
  7. 不要暴露类成员,供其他访问器访问。

 

6.开闭原则OCP

一个对象对扩展开放,对修改关闭。(对象只能扩展功能,不能对功能进行修改)。

 

23种设计模式

1.工厂模式

消费者————请求———工厂———控制———产品

消费者:只向工厂提出请求与接受产品

工厂:根据消费者提供的产品需求,生产与分配产品(过程对消费者透明)

2.建造者模式

将产品内部表向与产品生产过程分离,客户不必知道产品内部的实现细节。

3.工厂方法模式

工厂将具体的创建产品交给子类,核心厂成为抽象的工厂,对子厂进行管理。

4.单例模式

确保一个类只有一个实例,而且自行实例化,并向整个系统提供单个实例。

5.原始模型模式

用一个原对象来指明要创建的对象类型,使用时,复制多个原对象的方法创建出更多同类型对象

.适配器模式

 将两个因某种原因无法适配的接口进行适配,适配类可以根据参数返回一个合适的实例

.桥梁模式

将抽象化与实例化分离,将类之间的继承关系转化为关联关系。

.合成模式

将对象组织到树结构中,用来描述整体与部分关系。(处理对象树结构的模式)

.装饰模式

用对客户端透明的方式扩展对象的功能(动态的为对象增加功能)

10.门面模式

系统需要与外部子系统进行通讯,门面模式提供一个高层次的接口,使外部子系统更易使用

11.享元模式

通过共享的方式高效的支持大量的细粒度的对象。 代学习

12.代理模式

通过一个对象提供对另一个对象的代理,并由代理对象控制源对象的引用

代理对象是目标对象与客户的中介

13.命令模式

将请求与操作分装到一个对象中。它将发出命令与执行命令分离,委派给不同对象。

14.责任链模式

将对象之间的引用封装成责任链,该责任链对客户端透明。处理者可以将责任推个下家。

15.解释器模式

解释器模式可以定以一种文法,并提供一种解释器。客户端可以通过解释器解释该文法。

16.迭代子模式

顺序的访问一个聚集中的元素,不必高炉聚集的内部表象 

17.调停者模式

包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。

 

18.备忘录模式

用于在不破坏封装的条件下,将一个对象捉住,并外部化,存储起来,需要时调用。

19.观察者模式

用于监听对象之间(关系与状态的变化)

20.状态模式

允许一个对象在其内部状态改变时,改变行为。

21.策略模式

将一组实现特定功能算法封装成独立的接口,需要时实现该接口。算法的修改,不会影响到客户端。该模式将行为与环境分离 环境:用于维持与查询行为。

22.模板方法模式

准备一个抽象类,该类中声明一些抽象方法。不同的子类可以不同的方式实现这些抽象方法。

23.访问者模式

封装一些施加于某些数据结构之上的操作,操作修改,接受这个操作的数据结构不变

适用于数据结构相对未定的系统之中。

 

0 0