再就是3个类承担的天职过多,须要规划人士发现类的不等职分并将其分别

 
单一任务规范是最简易的面向对象设计原则,它用来控制类的粒度大小。单一任务规范定义如下:

纯净义务规范是最简单易行的面向对象设计标准,它用于控制类的粒度大小。单一职务规范定义如下:

单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。单一职责原则定义如下:
单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

 
 单一义务规范告诉大家:多少个类不可以太“累”!在软件系统中,1个类(大到模块,小到点子)承担的职责越来越多,它被复用的或然就越小,而且2个类承担的天职过多,就也等于将那几个职分耦合在一起,当其中三个职分变化时,只怕会潜移默化别的义务的运营,因而要将这几个义务举行分离,将区其他天职封装在不一样的类中,即将差其余转移原因封装在不同的类中,若是三个职责总是同时发出变动则可将它们封装在同等类中。

     
单一职分规范告诉我们:一个类无法太“累”!在软件系统中,3个类(大到模块,小到方法)承担的义务更多,它被复用的可能性就越小,而且一个类承担的天职过多,就约等于将这几个职分耦合在协同,当其中贰个义务变化时,只怕会潜移默化此外任务的周转,因而要将这几个职分举办分离,将不同的职务封装在不相同的类中,即将区其他生成原因封装在不一样的类中,假若四个任务总是同时发出变更则可将它们封装在相同类中。

     
单一职务规范告诉我们:一个类无法太“累”!在软件系统中,三个类(大到模块,小到方法)承担的职责更多,它被复用的恐怕性就越小,而且三个类承担的职分过多,就约等于将那么些职责耦合在联名,当其中一个职分变化时,只怕会潜移默化其余职务的运维,因而要将这个职务举办分离,将不相同的任务封装在区其余类中,即将差别的变化原因封装在分裂的类中,假若三个职务总是同时暴发变动则可将它们封装在一如既往类中。

     
单一职务规范是达成高内聚、低耦合的指点方针,它是最简便但又最难运用的基准,须要统筹人员发现类的两样职务并将其分别,而发现类的各类任务要求规划人员具备较强的解析规划力量和血脉相通实践经验。

      单一职务规范是促成高内聚、低耦合的指点方针,它是最不难易行但又最难运用的准绳,要求规划人士发现类的两样义务并将其分别,而发现类的层层任务须要规划人员具备较强的辨析规划能力和连锁实践经验。

      单一义务规范是促成高内聚、低耦合的辅导方针,它是最简便易行但又最难运用的规范,须求规划人员发现类的两样义务并将其分手,而发现类的层层职分须求统筹人士具备较强的分析规划力量和有关实践经验。

      上边通过一个简单易行实例来更为分析单一义务规范:

      上边通过3个简便实例来一发分析单一职务规范:

     
上面通过2个简练实例来更为分析单一职务规范:

Sunny软件公司开发人员针对某CRM(Customer Relationship  Management,客户关系管理)系统中客户信息图形统计模块提出了如图1所示初始设计方案:

图1  初始设计方案结构图

在图1中,CustomerDataChart类中的方法说明如下:getConnection()方法用于连接数据库,findCustomers()用于查询所有的客户信息,createChart()用于创建图表,displayChart()用于显示图表。

现使用单一职责原则对其进行重构。

Sunny软件公司开发人员针对某CRM(Customer Relationship  Management,客户关系管理)系统中客户信息图形统计模块提出了如图1所示初始设计方案:

图1  初始设计方案结构图

在图1中,CustomerDataChart类中的方法说明如下:getConnection()方法用于连接数据库,findCustomers()用于查询所有的客户信息,createChart()用于创建图表,displayChart()用于显示图表。

现使用单一职责原则对其进行重构。

Sunny软件公司开发人员针对某CRM(Customer Relationship  Management,客户关系管理)系统中客户信息图形统计模块提出了如图1所示初始设计方案:

图1  初始设计方案结构图

在图1中,CustomerDataChart类中的方法说明如下:getConnection()方法用于连接数据库,findCustomers()用于查询所有的客户信息,createChart()用于创建图表,displayChart()用于显示图表。

现使用单一职责原则对其进行重构。

     
在图1中,CustomerDataChart类承担了太多的天职,既涵盖与数据库相关的不二法门,又饱含与图片生成和展现相关的方法。即便在别的类中也急需一连数据库可能利用findCustomers()方法查询客户信息,则难以完毕代码的重用。无论是修改数据库连接方式依然修改图表突显格局都亟待修改该类,它不断多个唤起它生成的来由,违背了纯粹职责规范。由此必要对该类进行拆分,使其满足单一职分规范,类CustomerDataChart可拆分为如下七个类:

     
在图1中,CustomerDataChart类承担了太多的义务,既涵盖与数据库相关的方式,又含有与图片生成和展现相关的法子。假使在任何类中也亟需连接数据库或许使用findCustomers()方法查询客户音讯,则难以完结代码的重用。无论是修改数据库连接方式照旧修改图表突显格局都急需修改该类,它不止二个引起它生成的由来,违背了单一任务规范。由此须求对此类进行拆分,使其满意单一职分规范,类CustomerDataChart可拆分为如下四个类:

     
在图1中,CustomerDataChart类承担了太多的任务,既涵盖与数据库相关的法子,又带有与图片生成和出示相关的点子。假使在此外类中也亟需连接数据库大概接纳findCustomers()方法查询客户消息,则难以达成代码的任用。无论是修改数据库连接方式照旧修改图表突显格局都急需修改该类,它不止三个挑起它生成的案由,违背了单纯性职分规范。由此需要对此类举行拆分,使其满足单一职责规范,类CustomerDataChart可拆分为如下八个类:

      (1) DBUtil:负责连接数据库,包涵数据库连接格局getConnection();

      (1) DBUtil:负责连接数据库,包括数据库连接方式getConnection();

     
(1) DBUtil:负责连接数据库,包涵数据库连接形式getConnection();

      (2)
CustomerDAO:负责操作数据库中的Customer表,包蕴对Customer表的增删改查等艺术,如findCustomers();

      (2)
CustomerDAO:负责操作数据库中的Customer表,包涵对Customer表的增删改查等艺术,如findCustomers();

     
(2)
CustomerDAO:负责操作数据库中的Customer表,包括对Customer表的增删改查等艺术,如findCustomers();

      (3)
CustomerDataChart:负责图表的生成和呈现,包蕴方法createChart()和displayChart()。

      (3)
CustomerDataChart:负责图表的变动和显示,包罗方法createChart()和displayChart()。

     
(3)
CustomerDataChart:负责图表的扭转和出示,包罗方法createChart()和displayChart()。

      使用单一任务规范重构后的社团如图2所示:

      使用单一任务规范重构后的构造如图2所示:

     
使用单一义务规范重构后的构造如图2所示:

图片 1

图片 2

图片 3

图2  重构后的结构图

图2  重构后的结构图

图2  重构后的结构图

 

小说出处:http://blog.csdn.net/lovelion/article/details/7536542

相关文章