软件设计模式

一、设计目标:

⑴、软件设计目标:正确性、健壮性、灵活性、可重用性、高效性

1、正确性:也就是满足应用程序的需求。

2、健壮性:是指软件对于规范要求以外的输入情况的处理能力。也就是说,在异常情况下,软件能够正常运行的能力。

3、灵活性:就是可以允许代码修改平稳地发生,而不会波及到很多其他的模块。

4、可重用性:也就是重复使用的意思。

5、高效性:一般指两个方面,一是执行效率,二是存储效率。

⑵、良好设计的特征:可扩展性、灵活性、可插入性

1、可扩展性:新功能容易加入,而且不会影响已有功能,即不“僵硬”

2、灵活性:修改一个地方,不会影响其他,即不“脆弱”

3、可插入性:用一个容易替换另一个类,只要它们实现相同接口即可,即低“黏度”

⑶、面向对象的三大特征:继承性、封装性、多态性

1、继承性:特殊类的对象具有其一般类的对象的全部属性和行为,即称特殊类对一般类的继承。

2、封装性:把对象的属性和行为组合成为一个独立的单位或部件,并尽可能隐蔽对象的内

部细节,而只保留必要的对外接口,使之与外部发生联系。

3、多态性:是指不同类型的对象接收相同的消息时,产生不同的行为

二、设计原则:

⑴、软件设计原则:单一职责原则、开闭原则、里氏替换原则、接口

分离原则、依赖倒置原则

1、单一职责原则(SRP):一个类应该有且只有一个改变的理由,它要求“一个设计元素只做一件事”。

2、开闭原则(OCP):不修改原有类就能扩展一个类的行为。也就是说,一个软件实体应当对扩展开放,对修改关闭。

3、里氏替换原则(LSP):子类能替换其超类(is-a 关系),也就是说子类型(subtype)必须能替换其基类型(base type)。

4、接口分离原则(ISP):使用多个专门的接口比使用单一的总接口更好;换言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小的接口之上的;不应该强迫客户程序依赖于它们不用的接口

5、依赖倒置原则(DIP):要依赖于抽象,不要依赖于具体:也就是说,抽象不应当依赖

于细节,细节应当依赖于抽象;要针对接口编程,不要针对实现编程。

三、设计模式:

⑴、软件设计模式的定义:

1、模式:是做事的一种方法,也即是实现某个目标的途径,或者技术。

2、设计模式:描述了软件设计过程中某一类常见问题的一般性的解决方案

3、设计模式:是类的联合体以及与之相伴的算法,这些算法能够实现共同的设计目标。设计模式表达了一种思想而不仅仅是固定的类联合体,相伴的算法表示模式的基本操作。

⑵、面向对象设计模式的定义:

1、面向对象设计模式:描述了面向对象设计过程中,特定场景下,类与相互通信的对象之间常见的组织关系。

2、面向对象设计模式描述的是软件设计,因此它是独立于编程语言的,但是面向对象设计模式的最终实现仍然要使用面向对象编程语言来表达

⑶、设计模式的分类:

①、依据设计模式的行为方式,也即其目的,将设计模式分为三种类型:创建型

模式、结构型模式、行为型模式:

a、创建型模式:以灵活的方式创建对象的集合,如:工厂模式、抽象工厂模式、建造者模式、单件模式、原型模式等。

B、结构型模式:代表相关对象的集合,如:适配器模式、装饰模式、桥接模式、享元模式、外观模式、代理模式、组合模式。

C、行为型模式:在对象集合中捕获行为,如:模板方法模式、观察者模式、迭代子模式、

责任链模式、备忘录模式、命令模式、状态模式、访问者模式、中介者模式、策略模式。

②、根据设计意图可分为五类:接口型设计模式、责任型设计模式、构造型设计

模式、操作型设计模式、扩展型设计模式。

⑷、设计模式的主要职责(意图):

1、简单工厂设计模式:一个工厂类处于对产品类实例化的中心位置上,它知道每一个产品,它决定哪一个产品类应当被实例化。这个模式的优点是允许客户端相对独立于产品创建

的过程,并且在系统引入新产品的时候无需修改客户端,也就是说,它在某种程度上支

持“开-闭”原则。

2、工厂方法设计模式:是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。在软件系统中,经常面临着“某个对象”的创建工作;由于需求的变化,这个对象

经常面临着剧烈的变化,但是它却拥有比较稳定的接口。

3抽象工厂设计模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们

具体的泪。抽象工厂模式主要是用于创建一个产品族,而不是一个一个具体的产品。

4建造者模式:将产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程

生成具有不同的内部表象的产品对象。也就是说,它将一个复杂的构建与其表示相分离,

使得同样的构建过程可以创建不同的表示。

5单件模式:一个类仅有一个实例,并提供一个访问它的全局访问点。也就是说,单件模

式的要点是:某个类只能有一个实例;它必须自行创建这个实例;它必须自行向整个系

统提供这个实例。

6原型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型

对象的办法创建出更多类型的对象。

7适配器设计模式:将接口不同而功能相同或相近的两个接口加以转换。

8装饰模式:装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,

客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多

子类的情况下,将对象的功能加以扩展。

9桥接模式:将抽象化与实现化脱耦,使得二者可以独立地变化。实现系统可能有多角度

分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少

它们之间的耦合。

10组合模式:当需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对

象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑到组合模式了。

11模板方法模式:当我们要完成某一细节层次一致的一个过程或一系列步骤,但其个别步

骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。

12观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对

象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新

自己。

13迭代子模式:通过设计一个迭代器,这个迭代器提供一种方法,可以顺序访问聚合对象

中的各个元素,但又不暴露该对象的内部表示。

14责任链模式:为解除请求者和接受者之间的耦合,而使多个对象都有机会处理这个请求。

将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。

15备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保

存这个状态。这样以后就可以将该对象恢复到原先保存的状态。

16命令模式:目的是解除命令发出者和接收者之间的耦合关系,是二者相对独立,有利于

程序的并行开发和代码的维护。命令模式的核心思想是将请求封装一个对象,将其作为

命令发起者和接受者的中介,而抽象出来的命令对象又使我们能够对一些列请求进行某

些操作。

17状态模式:核心思想是允许一个对象在它的内部状态改变时改变它的行为,即不同的状

态对应不同的行为,这需要将状态单独抽象为一个对象。

⑸、设计模式结构图:

这里不详细叙述,参见帮助手册----Java设计模式-类图大全(.chm)精解、UML类图解析

http://download.csdn.net/detail/ljheee/9473393

推荐文档:

http://download.csdn.net/detail/ljheee/9473392

http://download.csdn.net/detail/ljheee/9473388

软件设计模式、目标、原则相关推荐

  1. 软件设计模式 SOLID 原则 - SOLID Principles

    软件设计模式 SOLID 原则 - SOLID Principles SOLID is a mnemonic for five design principles intended to make s ...

  2. 软件设计模式六大原则

    设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大 ...

  3. 软件设计模式六大原则之四接口隔离原则(PHP语言实现)

    转载,原文链接https://www.cnblogs.com/zhanghengscnc/p/8299459.html 定义:客户端不应该依赖它不需要的接口:一个类对另一个类的依赖应该建立在最小的接口 ...

  4. 设计模式-软件设计七大原则

    目录 综述 1.开闭原则 1.1开闭原则的定义 1.2开闭原则的作用 1.3开闭原则的实现方法 2.里氏替换原则 2.1里氏替换原则的定义 2.2里氏替换原则的作用 2.3里氏替换原则的实现方法 3. ...

  5. 软件的设计原则,设计模式以及软件的质量属性

    文章目录 软件的设计 设计原则 设计模式 软件的质量属性 定义 关系 软件的设计 ant design 设计价值观 在蚂蚁的开源项目ant design的介绍中,谈到了价值观,原则和模式之间的关系: ...

  6. 软件设计模式-7种设计原则总结

    7 种设计原则是软件设计模式必须尽量遵循的原则,各种原则要求的侧重点不同.其中,开闭原则是总纲,它告诉我们要对扩展开放,对修改关闭:里氏替换原则告诉我们不要破坏继承体系:依赖倒置原则告诉我们要面向接口 ...

  7. [摘抄]软件设计模式的几个原则

    原文地址:软件设计模式的几个原则 模式是一种对现实世界的概念抽象,建筑模式,设计模式,营销模式,商业运作模式各行各业都有自己的模式. 这里说的设计模式是软件设计里的模式,主要是指面向对象的软件设计.遵 ...

  8. 【设计模式】软件设计七大原则

    做好自己 软件设计七大原则 开闭原则OCP(Open-Closed Principle) 依赖倒转原则DIP(Dependence Inversion Principle) 单一职责原则SRP(Sin ...

  9. 【学习笔记】慕课网—Java设计模式精讲 第3章 软件设计七大原则-3-6 迪米特原则(最少知道原则)...

    /** * 软件设计七大原则-迪米特原则 学习笔记 * @author cnRicky * @date 2018.11.10 */ 迪米特原则(最少知道原则) 一个对象应该对其他对象保持最少的了解.又 ...

  10. 【软件设计模式】常用的设计模式的介绍

    软件设计模式 概念: 是一套反复使用的.多数人知晓的.经过分类编目的代码设计经验总结.是一种用于对软件系统中不断重现的设计问题的解决方案进行文档化的技术,是一种共享专家设计经验的技术. 目的: 在特定 ...

最新文章

  1. 图神经网络从入门到入门
  2. 欧盟调查或拖累进程 高通收购NXP一波三折
  3. Chapter 2 Open Book——34
  4. java中布局管理器flowlayout,在Java中下列()方法可以把JFrame的布局管理器设为FlowLayout类型。...
  5. [SHOI2008]cactus仙人掌图
  6. eBPF技术应用云原生网络实践系列之基于socket的service | 龙蜥技术
  7. Scala 函数式编程
  8. 物联网专科专业必修课程_江西自考专科物联网技术专业的考试课程/科目
  9. 华住数据库_华住内控人系列故事(四)技术领先篇——搭建大数据风险数据仓,实现自助取数...
  10. jsp中的url拼接的参数传递到controller乱码_Spring MVC中的拦截器
  11. 艰苦的编译boost python (失败)
  12. 单行文本溢出省略以及多行文本溢出省略css实现方式
  13. python之获取星期字符串
  14. 在生产环境中使用 Keras、Redis、Flask 和 Apache 进行深度学习
  15. 怎么把图片的边缘弄圆_ps边缘圆滑-怎么把抠出来的图边缘修圆滑?
  16. NFS挂载失败: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.
  17. 05二项式系数Cnk.md
  18. 第三方SDK:百度地图(二)定位 + 鹰眼轨迹
  19. 小程序开发——页面背景色设置
  20. 31-最大子矩阵(蓝桥杯)

热门文章

  1. 哪种软件测试硬盘速度,哪种工具最适合硬盘,SSD,U盘,存储卡速度性能测试?...
  2. VARCHART XGantt_v5.1用户手册:如何提供数据(.NET版)
  3. mysqli_fetch_all() 函数
  4. 社交网络分析的 R 基础:(一)初探 R 语言
  5. Wincc声音报警简单方法
  6. 暗黑破坏神不朽怎么在电脑上玩 暗黑破坏神不朽模拟器教程
  7. 微商爆粉2.0全自动批量加人模拟手动操作
  8. 【HDL系列】半减器、全减器和减法器原理和设计
  9. ios备忘录下载安卓版_iOS8备忘录
  10. ## 鲁棒控制 第一节 概论