现在的位置: 首页 > 综合 > 正文

面向对象:单一任务原则(SRP)

2012年09月03日 ⁄ 综合 ⁄ 共 940字 ⁄ 字号 评论关闭

 

 

Robert C. Martin提出的面向 象的5个原

次介 一下单一
任原

任原
(Single Responsibility Principle (SRP)):

任只有一个,修改
的理由不能存在多个。

参考文档(http://www.objectmentor.com/resources/articles/srp.pdf )

遵循SRP
任原
类满
足以下条件:
  ◇ 只
有一个角色(
任)
  ◇ 修改
合,修改的理由只有一个
 

什么要去

任是
一的呢?

一个
有复数个
任,
修改的
候有2个以上的理由。其中某一个机能修改的
候很容易影响到其他机能。
件的安定性和 维护
便利性很会
差。
SRP
任原
中"修改的理由=
任"
这样
。即使理
明白但在
践中判断是比

的。
下面以打电话举
明:
Modem.java
interface Modem {
    public void dial(String pno);    //拨打
    public void hangup();          //挂电话
    public void send(char c);     //送信
    public char recv();           //收信
}
这样定义的Modem接口
看起来是一组机能,实质上是两组机能。
   ◇ 连接管理
(dial、hangup)
    ◇ 数据送受信(send、recv)
为什么这边要分为两组机能呢?

Modem有以下修改:
   ◇ 连接方法的修改
 ⇒ Modem 类修改
   ◇ 送受信方法的修改 ⇒ Modem类修改
因此对应相对的变化,这边作为两组机能。
 
这样我们就可以重新定义如下
连接管理接口
    Connection {dial, hangup}
数据送受信接口:
    DataChannel {send, recv}
然后具体的实现
给继 承接口的各自的
实现
一般来说,
SRP
单一责任原则类的设计可以通过以下步骤来实现:
  ①寻找机能
:有什么
样的机能?
  ②汇总机能(定义类)
:相似的机能
归总到一个类
  ③考虑修改理由
:列
举类可能的修改理由
  ④分割类:如果类有多个修改理由的场合,把类分割成多个类。或者是多个类因只有一个修改理由而汇总成一个类。

抱歉!评论已关闭.