- 浏览: 762270 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (241)
- 个人思考 (1)
- 数据库 (5)
- java基础 (32)
- 软件工程 (2)
- zk开源框架 (15)
- 设计模式 (25)
- javascript (12)
- css (9)
- UML (2)
- CMMI软件需求 (3)
- CMMI软件设计 (2)
- CMMI软件实现 (1)
- CMMI软件测试 (1)
- 正则表达式 (4)
- 系统日志配置 (4)
- 应用服务器 (1)
- spring (7)
- XML (6)
- java web (10)
- Ajax (3)
- RichFaces (14)
- 问题 (1)
- 评论文章 (2)
- fushioncharts (2)
- MAVN (4)
- jquery (26)
- Ext js学习 (2)
- 学习心得 (2)
- CSS兼容问题 (3)
- XSL-FOP (1)
- Quartz (0)
- OSGI (1)
- spring--security (6)
- apache tools (1)
- eclispe 小技巧 (2)
- Ant (1)
- 杂记 (1)
- spring3系列 (5)
- java cache (4)
- EffectiveJava (2)
- 代码重构 (0)
最新评论
-
psz6696:
可以说是超级简单的Demo了,可惜没有演示设值注入和构造注入两 ...
模拟spring中的ClassPathXmlApplicationContext类的实现 -
ziyourJava:
[flash=200,200][img][url][list] ...
spring security进级篇 V 自定义标签控制显示 -
ztw1122:
...
zk组件开发指南(目录) -
zjysuv:
容我说一句 在座的各位都是垃圾 spring 3.2以后的@C ...
三. spring mvc 异常统一处理 -
chengwu1201:
二 基于Spring的异常体系处理
学习设计模式,自然会涉及面向对象的设计原则,面向对象的设计原则一般包括五个原则,下面详细介绍下五个原则:
1、单一职责原则(single responsibility principle )
There should never be more than one reason for a class to change.
所谓单一职责原则,就是对一个类而言,应该仅有一个引起它变化的原因。换句话说,一个类的功能要单一,只做与它相关的事情。在类的设计过程中要按职责进行设计,彼此保持正交,互不干涉。
什么是职责?
在SRP 中,职责定义为“变化的原因”。如果你能够想到多于一个的动机去改变一个类,那么该类就具有多于一个的职责。
为什么要采用单一职责原则?
因为每一个职责都是变化的一个轴线,当需求变化时,该变化会反映为类的职责的变化。如果一个类承担了多于一个的职责,那么就意味着引起它的变化的原因会有多个。如果一个类承担的职责过多,那么就等同于把这些职责耦合在了一起。一个职责的变化可能会抑制到该类完成其他职责的能力,这样的耦合会导致脆弱的设计。当变化发生时,设计会受到意想不到的破坏。单一职责原则正是实现高内聚低耦合需要遵守的一个原则。
注意: 单一职责原则简单而直观,但在实际应用中很难实现。只有变化的轴线仅当实际发生时才具有真正的意义。如果没有预兆,那么去应用SRP或者其他任何的原则都是不明智的。
下面就Modem接口为例,说明其原则。
interface Modem { public void dial(String pno); //拨号 public void hangup(); //挂断 public void send(char c); //发送数据 public char recv(); //接收数据 }
大多数会认为看起来非常合理,该接口声明的4个函数确实是调制解调器的功能。 然而,该接口中却显示出两个职责。第一个职责连接管理,第二个职责是数据通信。dial和hangup函数进行调制解调器的连接管理,而send和recv负责进行数据通信。这两个职责应该被分开吗?这依赖于应用程序变化的方式。如果应用程序的变化会影响到连接函数的签名,那么这个设计就是僵硬的设计,因为调用send和 recv的类必须重新编译、部署的次数会超过我们预想的情况。在这种情况下,这两个职责必须被分离,我们分别实现这两个职责于:
interface DataChannel { public void send(char c); public void recv(); } interface Connection { public void dial(string pno); public void hangup(); }
让ModemImplementation 实现这两个接口。我们注意到,ModemImplementation又组合了2个职责,这不是我们希望的,但有时这又是必须的。通常由于某些原因,迫使我们不得不绑定多个职责到一个类中,但我们至少可以通过接口的分割来分离应用程序关心的概念。事实上,这个例子一个更好的设计应该是这样的,如图:
高内聚、低耦合解释:
这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低
首先要知道一个软件是由多个子程序组装而成, 而一个程序由多个模块(方法)构成!
“高内聚,低耦合”主要是阐述的面向对象系统中,各个类需要职责分离的思想。
每一个类完成特定的独立的功能,这个就是高内聚。耦合就是类之间的互相调用关系,如果耦合很强,互相牵扯调用很多,那么会牵一发而动全身,不利于维护和扩展。
类之间的设置应该要低耦合,但是每个类应该要高内聚.耦合是类之间相互依赖的尺度.如果每个对象都有引用其它所有的对象,那么就有高耦合,这是不合乎要求的,因为在两个对象之间,潜在性地流动了太多信息.低耦合是合乎要求的:它意味着对象彼此之间更独立的工作.低耦合最小化了修改一个类而导致也要修改其它类的"连锁反应". 内聚是一个类中变量与方法连接强度的尺度.高内聚是值得要的,因为它意味着类可以更好地执行一项工作.低内聚是不好的,因为它表明类中的元素之间很少相关.成分之间相互有关联的模块是合乎要求的.每个方法也应该高内聚.大多数的方法只执行一个功能.不要在方法中添加'额外'的指令,这样会导致方法执行更多的函数。
推广开来说,这个思想并不限于类与类之间的关系。模块和模块,子系统之间也都要遵守这个原则,才可以设计出延展性比较强的系统。
发表评论
-
面向对象设计原则-------总结
2015-07-14 10:55 0单一职能原则 ----- 设计类时,尽量功能单一,粒度合 ... -
MVC设计模式理解
2009-11-16 22:11 2076常常说MVC设计模式,今天抽空整理下,感觉模式这东 ... -
面向对象设计的原则---------迪米特原则
2009-10-15 21:15 3167迪米特原则(Law of Demeter) 1、迪米特原则的 ... -
面向对象设计的原则------接口隔离原则
2009-10-12 15:50 2800接口隔离原则(Interface ... -
面向对象设计的原则------依赖倒置原则
2009-10-11 18:27 3634依赖倒置原则(Dependence Inversion Pri ... -
面向对象设计的原则------里氏代换原则
2009-10-11 14:21 2633里氏代换原则(Liskov Sub ... -
面向对象设计的原则------开闭原则
2009-10-10 23:09 2468开闭原则(Open-Closed Prin ... -
观察者模式
2009-08-04 22:14 1175gaojie -
组合模式-------树形模式
2009-08-03 20:42 22551、组合模式定义 ... -
命令模式
2009-08-02 14:06 18391、Commad模式是一种对象行为模式,它可以对发送者(se ... -
适配器和外观模式的区别
2009-08-01 18:23 1401ok -
适配器模式
2009-08-01 14:43 1187适配器模式通俗的说是将两个联系不密切的类或类与接口通过另一个类 ... -
门面模式(外观模式)
2009-07-29 22:49 14741、外观模式 为子系统的一组接口提供一个一致的界 ... -
简单工厂模式、代理模式、策略模式如此相似
2009-07-21 22:34 4113最近,一直在看设计模式,感觉简单工厂模式、代理模式、策略模式、 ... -
策略模式
2009-07-19 23:01 1358今天学习策略模式。策略模式是这个样子的。定义一个接 ... -
jdbcTemplate分页封装
2009-07-16 09:17 41401.JdbcTemplateExtend.java publi ... -
单例模式完全剖析
2009-07-07 21:01 1339概要 单例模式是最简单的设计模式之一,但是对于Jav ... -
DAO设计模式
2009-07-04 11:40 2233虽然DAO模式已经有了好多的成熟的框架,但它仍然是 ... -
工厂模式与DAO模式
2009-07-02 21:17 4416工厂模式是设计模式中较简单的模式,但在项目的开发过 ... -
动态代理模式
2009-06-30 22:25 15122.动态代理类 Java动态代理类位于Ja ...
相关推荐
- **单一职责原则**(Single Responsibility Principle, SRP):一个类应该只有一个引起它变化的原因。 - **开放封闭原则**(Open/Closed Principle, OCP):软件实体应该是对扩展开放的,对修改封闭的。 - **里氏...
1. 单一职责原则(Single Responsibility Principle, SRP):一个类应该只有一个引起它变化的原因。这意味着一个类应该只做一件事情,这样可以提高代码的可维护性和可读性。 2. 开放封闭原则(Open-Closed ...
4 单一职责原则-Single Responsibility Principle (SRP) 5 开闭原则-The Open-Closed Principle (OCP) 二 包的设计原则 6 重用发布等价原则-Release Reuse Equivalency Principle (REP) 7 无环依赖...
### 面向对象设计原则详解 面向对象设计原则是一系列指导软件开发人员构建高质量、易于维护和扩展的软件系统的准则。这些原则旨在帮助开发者创建更健壮、更灵活的系统,减少代码间的耦合度,并提高代码的重用性和...
面向对象 设计原则 单一职责原则--SRP 开放封闭原则--OCP Liskov替换原则--LSP 依赖倒置原则--DIP 接口隔离原则--ISP
面向对象设计原则总结 面向对象设计原则是软件设计中最重要的原则之一,它们是软件设计的基础和核心。面向对象设计原则的应用可以提高软件的开发效率、质量和可维护性。下面是七大面向对象设计原则的总结: 一、开...
3. **单一职责原则(Single Responsibility Principle, SRP)** - **原则阐述**:一个类应该只有一个改变的原因。 - **实践意义**:通过将类的功能细化到单一职责,降低类的复杂度,提高代码的可读性和可维护性。 ...
- 反思实验中对面向对象原则的理解和应用,如单一职责原则、开放封闭原则等。 5. 实验源码和源码地址: - 提供完整的源代码,包括各个类的定义、对象的实例化和方法调用。 - 将源码托管在GitHub或其他代码仓库,...
首先,我们来了解四个基础的面向对象设计原则:单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)和接口隔离原则(ISP)。 1. 单一职责原则(Single Responsibility Principle, SRP):一个类或模块...
- 讨论面向对象设计原则,如单一职责原则、开放封闭原则、里氏替换原则等在实验中的体现。 - 总结实验成果,评估代码的可读性、可维护性和扩展性。 5. 实验源码和源码地址: - 在完成实验后,应将源代码托管到像...
1. **单一职责原则(Single Responsibility Principle, SRP)** 这一原则规定,一个类应该只有一个引起其变化的原因。换句话说,每个类应专注于完成一个特定的职责或功能,避免职责混杂。这样可以提高代码的稳定性...
面向对象设计原则概述 单一职责原则 开闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 合成复用原则 迪米特法则
1面向对象6大原则--单一职责原则 2面向对象6大原则--里氏代换原则 3面向对象6大原则--开闭原则 4面向对象6大原则--依赖倒转原则 5面向对象6大原则--合成复用原则 6面向对象6大原则--接口隔离原则
以下将详细介绍面向对象设计的六大原则:单一职责原则(Single Responsibility Principle, SRP)、开放封闭原则(Open-Closed Principle, OCP)、里氏替换原则(Liskov Substitution Principle, LSP)、依赖倒置原则...
面向对象设计原则概述 单一职责 开闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 合成复用原则 迪米特法则
1. **单一职责原则**(Single Responsibility Principle,SRP):一个类应该只有一个引起它变化的原因。 2. **开放封闭原则**(Open/Closed Principle,OCP):软件实体应该是可扩展的,但不可修改。 3. **里氏替换...
1. 单一职责原则(SRP):一个类或模块应只有一个改变的原因。这有助于保持代码的模块化,降低耦合度。 2. 开放封闭原则(OCP):软件实体(类、模块、函数等)应对扩展开放,对修改关闭。这意味着我们可以添加新的...