设计模式基础——面向对象设计原则(二)
来源:互联网 发布:sh linux 编辑:程序博客网 时间:2024/04/30 02:08
单一职责原则
面向对象设计原则简介:http://blog.csdn.net/memphychan/article/details/50321365
一个类(或者模块、方法)所承担的责任越多,其被复用的机会就越低。职责承担过多,这些职责就越容易耦合在一起,但一个职责改变的时候,往往会影响其他职责,造成脆弱的设计。
要在开发中实施单一职责原则,则必须要求我们理清职责的种类与归属,写出高聚合,低耦合的代码。其中一条技巧是,将不同的职责(即引起变化的原因)封装在不同的类中,如果多个职责总是同时发生改变,则可以将这些职责封装到同一个类中。
例子:
颜莞璐公司需要开发一个试卷自动生成系统(PaperGeneratingSystem),该系统从xml文件中读入试题,并存储到数据库中,用户可以根据需求动态生成试卷。
颜莞璐一开始的设计是这样的:
readXMLFile方法负责读入xml文件并保存在数据库中,genneratePaper方法负责根据需求从数据库中取出试题并自动生成试卷,getConnection方法负责连接数据库。
在本例中,PaperGeneratingSystem承担了太多的职责,既包括数据库相关的方法,又包括xml文件的读入、解析以及试卷的自动生成。readXMLFile既要读入xml文件,还需要将解析结果保存在数据库中。generatePaper既要负责从数据库取出试题,又要生成试卷。
上述设计导致的结果就是职责的耦合,大大降低了类(或方法)的可复用性。
改进:
改进之后,将数据库连接的职责封装在DBUtil中,将保存、取得试题的职责封装在QuestionDao中,将xml文件解析的职责封装在XMLReader中,PaperGeneratingSystem负责解析试题、生成试卷。上述几个类各施其职,大大降低了原本系统的职责耦合,并且高内聚、低耦合的DBUtil、QuestionDao、XMLReader可以轻易地被其他有需要的类复用。
0 0
- 设计模式基础——面向对象设计原则(二)
- 设计模式——面向对象设计的原则(二)
- 设计模式基础——面向对象设计原则(一)
- 设计模式(二) 面向对象设计原则
- 设计模式学习笔记——面向对象设计原则
- 开篇—-面向对象的设计原则与设计模式
- JAVA基础再回首(二十六)——面向对象思想设计原则、设计模式、简单工厂模式、工厂方法模式、单例设计模式之饿汉式和懒汉式、Runtime类
- C++设计模式<二>:面向对象设计原则
- 面向对象的设计原则(二)
- 面向对象设计原则二
- 可复用面向对象软件基础——设计模式(二)之工厂方法模式
- 设计模式面向对象原则(转载)
- 面向对象设计模式原则
- 面向对象设计模式原则
- 【设计模式】面向对象原则
- 设计模式学习笔记(一)——面向对象设计模式与原则
- 设计模式学习笔记(一)——面向对象设计模式与原则
- 设计模式——面向对象基础
- codeforces#80 D. Time to Raid Cowavans(根号分块,离线处理)
- Array与List的简单应用
- 关系数据库迁移非关系数据库方案(iwantmoon.com出品)
- 23个位运算技巧
- 通过重构重命名修改项目名称后,运行状态栏显示旧项目名的解决办法
- 设计模式基础——面向对象设计原则(二)
- Android Studio - 目录结构 和 常用功能介绍 浅析
- Linux安装FTP
- 木材加工
- java转码成为unicode
- ajax实现文件下载
- Android音频系统之AudioFlinger(三)
- HTML5使用 getUserMedia方法调用本地摄像头拍照
- iOS应用发布流程(一)------相关app证书的申请、下载以及安装