文档介绍:面向对象设计中应遵循的五大原则
2012-04-23~2012-05-02
目录
单一职责原则
接口隔离原则
依赖倒置原则
开放闭合原则
Liskov替换原则
如何正确进行类的设计
在本单元重点了解如下知识点
单一职责原则(SRP)
接口隔离原则(ISP)
依赖倒置原则(DIP)
开放-封闭”原则(OCP)
Liskov替换原则(LSP)
遵守面向对象设计中的“五大原则”
面向对象设计和编程概述
1、面向对象设计(OOD)和面向对象编程语言(OOPL)
Object-Oriented Programming Language可以提高程序的封装性、复用性、可维护性,但仅仅是“可以”。
让我们开始涉猎软件系统设计的思想、原则和模式方面的内容…
Robert 《敏捷软件开发——原则、方法与实践》一书中总结出了“单一职责原则”。
让我们先从“单一职责原则”开始吧…
2、能不能真正实现OOD和OOPL所体现出的这些“优点”?
取决于设计和编程人员具体“如何做”。
3、那么如何能够达到如此“境界”? 有什么设计思想、设计原则和设计模式吗?
单一职责原则
1、什么是SRP(Single-Responsibility Principle)
一个类应该仅有一个引起它的变化的原因(职责),这条原则也称为类设计的“高内聚性原则”。
(l)含义之一
避免相同的职责(也称为功能)分散到不同的类中实现
(2)含义之二
也应该要避免一个类承担过多的职责。
少管闲事,专心做一件事情!“一心无二用”!
它指导我们如何提高代码的可重用度!
为什么要遵守单一职责原则
(1)可以减少类之间的耦合
你知道为什么“螺钉”的可重用性高!
主要的责任在“方丈”
当需求变化时,只修改一个类,从而也就隔离了变化;
如果一个类有多个不同的职责,它们就耦合在一起,当一个职责发生变化时,可能会影响其它的职责。
(2)不遵守单一职责原则的后果
会影响到对该类的复用性。
当只需要复用该类的某一个职责时,由于它和其它的职责耦合在一起,也就很难分离出。
(3)遵守单一职责原则的示例
为什么要遵守单一职责原则
3、遵守单一职责原则的各种GOF设计模式
类的设计主要工作是“发现职责”并“分离职责”!
(1)工厂模式的应用
分离对象的“创建”和对象的“使用”方面的职责。
分离“共性功能实现”和“个性扩展”方面的职责。
(2)模板方法模式的应用
遵守单一职责原则的各种GOF设计模式
遵守单一职责原则的各种GOF设计模式
(3)命令模式的应用
分离“命令的请求者”和“命令的实现者”方面的职责。
(4)代理模式的应用
分离“服务的请求者”和“服务的提供者”各自方面的职责;
应用业务代理类的主要的目的是降低客户端与业务组件之间的紧密关联性和提高业务功能组件类的安全性。
希望大家掌握对这些基本的模式的具体应用!
遵守单一职责原则的各种GOF设计模式
4、遵守单一职责原则的系统架构设计
(1)单一职责原则不只是对类设计有意义,对以模块、子系统为单位的系统架构设计同样也有意义
一个模块、子系统也应该仅有一个引起它变化的原因,如MVC所倡导的各个层之间的相互分离其实就是单一职责原则在系统总体设计中的应用。
(2)Struts2框架中应用代理模式的示例