美文网首页
面向对象中23种设计模式介绍

面向对象中23种设计模式介绍

作者: small瓜瓜 | 来源:发表于2019-05-06 16:52 被阅读0次
  1. 什么是设计模式?
  2. 设计模式分为哪几种?

什么是设计模式?

设计模式的六大原则

1、开闭原则(Open Close Principle
开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类

2、里氏代换原则(Liskov Substitution Principle
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。—— From Baidu 百科

3、依赖倒转原则(Dependence Inversion Principle
这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle
这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。

5、迪米特法则(最少知道原则)(Demeter Principle
为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle
原则是尽量使用合成/聚合的方式,而不是使用继承。

总结

设计模式是对软件设计中常见问题,找出的可重用解决方案。它并不依托具体的语言。换言之Java可以使
用,其他的面向对象的语言也可以。设计模式不是可以直接转换为代码的已完成设计,它只是一种在许多不
同情况下用于解决问题的表述或者模板。

面向对象的设计模式通常显示类或对象之间的关系和交互,并不指定相关的最终应用程序类或者对象。
很多模式只意味着面向对象,或者更为普遍的可变状态,因此可能不适用于数据不可变或被视为不可
变的函数式编程语言。

设计模式通常使用统一标记语言(UML) 来描述 - UML用一个类图显示构成设计模式的组件之间的关系。
此外,UML具有大量的富有表达性的词汇,有助于描述模式的细节。

设计模式分为哪几种?

“四人帮”(Gang of Four)设计模式

创建型模式:
英文名 中文名 备注说明
singleton 单例 分为懒汉式和饿汉式
factory-method 工厂方法 需要通过多分支判断或是独立方法创建指定的对象,不符合开闭原则,可以通过与Spring的连用消除,比较常用
abstract-factory 抽象工厂 符合开闭原则,但是会造成类的增多,项目复杂性变大
builder 建造者 只能增加产品族,不能增加单个种产品
prototype 原型 当对象new出来要消耗很多时间或是资源的时候,用原型方式创建是个很好的选择,Spring底层和js Prototype就是一个原型模式
结构型模式:
英文名 中文名 备注说明
adapter 适配器 通过实现Target接口,并将适配接口设置为成员属性,实现或是继承适配接口
proxy 代理 分为静态和动态代理模式
composite 组合 树形结构,XML和HTML解析,Junit就是一个比较典型的例子
decorator 装饰 扩展对象功能,比继承更灵活,不会导致类个数急剧增加,但是会产生很多小对象,java种的IO流处理就是用了这个模式,
bridge 桥接
facade 外观 比较常用的模式,很多时候我们都要用这种模式对我们所编写的单元进行封装,使他人只需要很少的了解,就可以使用我们的程序
flyweight 享元 高效的支持大量细粒度对象的重用,但是这是一种以时间换空间的方式,String类,线程池,数据库链接池等都是采用该模式
行为型模式:
英文名 中文名 备注说明
iterator 迭代器 提供一种可以遍历聚合对象的方式,又称为cursor模式
mediator 中介 解耦多个同事对象之间的交互关系。每个对象都持有中介者对象的引用,只跟中介者对象打交道,通过中介者进行统一的管理
command 命令
chain-of-responsibility 责任链 环环相扣,一个事件的处理,按事件的情况由不同的类来处理,即可以责任链模式,比如员工请假以天数为基准,用负责人,副总经理,总经理批准
interpreter 解释器 增加了新的解释表达式的方式,但是执行效率比较低,可利用场景比较少。
visitor 访问者 对于存储一个集合的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同的访问者其访问方式也有所不同(不常用,了解即可)
strategy 策略 解决某一问题的算法族,用户从该算法族中任选一个算法解决某一问题,同时可以方便的更换算法或是增加新算计
observer 观察者 主要用于1:N的通知。当一个对象(目标对象Subject或Observable)的状态变化是,他需要及时告知一系列对象(观察者对象,Observer),令他们做出响应。通知观察者的方式有
memento 备忘录
template-method 模板方法 处理步骤父类中定义好了,具体实现延迟到子类中定义
state 状态 用于复杂对象的状态下行为的封装问题

参考文章
Java之美[从菜鸟到高手演变]之设计模式

相关文章

  • 面向对象:6大原则、24种设计模式

    接上一篇:面向对象介绍 为什么要学设计原则、设计模式? 若不学好经典设计模式,和通过设计模式理解面向对象的原则,你...

  • 详解iOS App设计模式开发中对于享元模式的运用

    这篇文章主要介绍了iOS App设计模式开发中对于享元模式的运用 享元模式的概念   在面向对象软件设计中,利用公...

  • 面向对象设计原则

    面向对象设计原则 面向对象设计原则是设计模式的基础,每个设计模式都符合一一种或多种面向对象的设计原则。 常用的面向...

  • 面向对象中23种设计模式介绍

    什么是设计模式? 设计模式分为哪几种? 什么是设计模式? 设计模式的六大原则 1、开闭原则(Open Close ...

  • 单例模式

    面向对象设计的设计模式(四):单例模式

  • GeekBand极客班C++设计模式(一)

    1、设计模式简介 设计模式-不断解决,不必重复推荐书籍-设计模式:可复用面向对象软件的基础面向对象-底层思维:语言...

  • 要点1 Java相关

    1. 熟练掌握Java技术,熟悉面向对象思想,熟悉常用设计模式; 面向对象思想: 继承, 封装, 多态 设计模式:...

  • 面向指针编程(一)

    面向对象编程,面向设计模式编程(亦即设计模式),面向接口编程,面向模板编程(亦即泛型编程),面向函数编程(亦即函数...

  • 面向对象、设计原则、设计模式、编程规范、重构

    面向对象、设计原则、设计模式、编程规范、重构 面向对象 主流的三个编程风格有:面向对象,面向过程,函数式编程。 面...

  • 设计模式的原则

    面向对象的原则是面向对象的目标,而设计模式是为了实现这些原则的手段和方法。这也就是为什么要有设计模式。 面向对象的...

网友评论

      本文标题:面向对象中23种设计模式介绍

      本文链接:https://www.haomeiwen.com/subject/qfhubqtx.html