一.设计模式概念
1.设计模式是人们在长期的软件开发中对一些经验的总结,是对某些特定问题经过实践检验的特定解决方法。
2.设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术方案总结成设计模式,也会使其他开发者更加容易理解其设计思路。设计模式是可复用的面向对象软件的基础。帮助开发者做出有利于系统复用的选择,避免损害系统复用性的设计。
3.目前所说的设计模式通常是指GoF设计模式。GoF(Gang of Four,四人组)指的是DesignPatterns:Elements of Reusable Object-Oriented Software这本书的4位作者:Gamma、Helm、Johnson和Vlissides,书中总结l23种经典的设计模式,因此也被称为Gof设计模式。
这23种设计模式有两类分类方式。
1.根据目的划分,即根据设计模式是用于完成何种工作来划分创建型模式、结构模式和行为模式3种
1.创建模式:用于描述"如何创建对象",其主要特点是"将对象的创建与使用分离"。
2.结构型模式:用于描述如何将类或对象按某种布局组成更大的结构。
3.行为型模式:用于描述类或对象之间如何相互协作,共同完成单个对象无独立完成的任务,以及如何分配职责。
二.软件可复用问题和面向对象设计原则
1.单一职责原则
单一职责原则规定一个类应该有且仅有一个引起它变化的原因,简单来说,一个类应该只负责一个职业;否则,类应该被拆分。
该原则提出一个类不应该承担太多职责。如果一个类承担太多的职责,至少存在以下两个缺点。
(1).一个职责的变化可能会影响这个类实现其他职责的能力,或者引发其他职责故障。
(2).当客户需要该类的某一个职责时,不得不将其他不需要的职责全部包含进来,从面造成沉余
2.开闭原则
开闭原则是面向对象设计中最基础的设计原则,开闭原则规定一个软件实体。
3.里氏替换原则
里氏替换原则是面向对象设计的基本原则之一,是继承复用的基石。
4.依赖倒置原则
依赖倒置原则的核心思想是:依赖于约定而不依赖于具体实现,即面向接口编程。对象依赖关系有3种传递方式。
1.通过构造方法传递依赖对象,即构造方法的参数是需要依赖的接口类型。
2.通过setter方法传递依赖对象,即setter方法的参数需要依赖的接口类型。
3.接口声明依赖,即接口方法的参数是需要依赖的接口类型。
5.接口隔离原则
接口隔离原则和单一职责原则是为了提高类的内聚性,降低它们之间的耦合度。
6.迪米特
迪米特法则又称为最少知道原则,是指一个软件实体应当尽可能少地与其他实体发生相互作用。
7.合成复用原则
合成复用原则是指:尽量使用组件/聚合的方式,而不是继承关系达到软件复用的目的。