设计模式

来源:互联网 发布:mac地址 ip地址区别 编辑:程序博客网 时间:2024/06/03 18:40

设计模式 (即,使代码编写真正工程化)
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。
设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

最早将模式的思想引入软件工程方法学的是1991-1992年以“四人组(Gang of Four,简称GoF,分别是Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides)”自称的4位著名软件工程学者,他们在1994年归纳发表了23种在软件开发中使用频率较高的设计模式。

刘伟——设计模式的艺术(软件开发人员内功修炼之道)书中提到:软件模式是指在软件开发过程中某些可重现问题的有效解决方法,其基础结果主要由4部分构成,包括:问题描述(待解决的问题是什么)、前提条件(在何种环境或约束条件下使用)、解法(如何解决)和效果(由哪些优缺点)。

软件模式基本结构:
这里写图片描述

GoF设计模式共23种,分为三种类型:
1、创建型模式(5种):单例模式、工厂方法模式、抽象工厂模式、原型模式、建造者模式。
PS:简单工厂模式并不属于GoF23种设计模式,但是一般在介绍设计模式时,都会对其进行说明。
2、结构型模式(7种):适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式。
3、行为型模式(11种):策略模式、模版方法模式、命令模式、迭代器模式、观察者模式、职责链模式(责任链模式)、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式(Interpreter模式)。

7种常用的面向对象设计原则,是用于评价一个设计模式的使用效果的重要指标之一:
1、单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责。或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。
2、开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
3、里氏代换原则(Liskov Substitution Principle, LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象。
4、依赖倒转原则(Dependence Inversion Principle, DIP):抽象不应该依赖于细节,细节应该依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。
5、接口隔离原则(Interface Segregation Principle, ISP):使用多个专门的接口,而不是使用单一的总接口,即客户端不应该依赖哪些它不需要的接口。
6、合成复用原则(Composite Resuse Principle, CRP):尽量使用对象组合,而不是继承来达到复用的目的。
7、迪米特法则(Law of Demeter, LoD):一个软件实体应当尽可能少地与其他实体发生相互作用。

原创粉丝点击