下置方法

简介:

显然,原因也应该是出于相反的考虑。当在继承族中父类的某个方法仅仅对某个特殊的子类有意义,而对于其他子类并不是必须的,那么这个方法就应该被下置到需要这个方法的特殊子类中,而不是存在于父类而让其派生类都拥有这样的方法。

重构前的代码例子如下:

 
  1. abstract class Animal {  
  2.     // some methods  
  3.     public abstract void bark();  
  4. }  
  5.  
  6. class Dog extends Animal {  
  7.     @Override 
  8.     public void bark() {  
  9.         // code  
  10.     }  
  11. }  
  12.  
  13. class Cat extends Animal{  
  14.     @Override 
  15.     public void bark() {  
  16.         // code  
  17.     }  
  18. }  

我们知道,Cat 类并不会像 Dog 类那样 bark() 即吠,这个方法应该是 Dog 类特有的,不应该存在于父类而对所有子类可见,重构只需要将其移至 Dog 类,如下:

 
  1. abstract class Animal {  
  2.     // some methods  
  3. }  
  4.  
  5. class Dog extends Animal {  
  6.     public void bark() {  
  7.         // code  
  8.     }  
  9. }  
  10.  
  11. class Cat extends Animal{  
  12.     // some methods  
  13. }  

可能有人会觉得可以在重构前的代码中位 Cat 类中的 bark() 进行空实现,同样不影响 Cat 类的使用。但是,在一个类中空实现一个不关紧要、不必需的方法似乎没什么意义,这样会增大子类和父类之间的耦合。如果真的想要让 Cat 类也能够发出声音,那么可以设计一个专门标识 Animal 发出声音的 interface ,如 MakeNoise 接口,让想要发出声音的 Animal 子类实现它即可。这样子就可以将原来 Animal 抽象类中的一个依据不同子类有不同实现的功能给分离开来了。

同样,这个重构方法还是需要我们辨清各个类的职责、功能所在,避免为了子类的诸多功能而设计出一个臃肿的父类,更糟糕的是在继承族中造成不少不良影响。



本文转自 xxxx66yyyy 51CTO博客,原文链接:http://blog.51cto.com/haolloyin/343771,如需转载请自行联系原作者

相关文章
|
2月前
|
自然语言处理 算法 数据挖掘
长绳方法
进一步提高语言模型(LLM)的性能,通过扩展其上下文窗口至超过200万个标记,从而实现更深入的语境理解。本文将对这一成果进行深入解读,探讨其意义和潜在应用。
17 2
v-for的四种方法
v-for的四种使用方法分别是: 1.使用v-for循环一个简单的数组 2.使用v-for循环一个复杂的数组 3.使用v-for循环对象 4.v-for循环一个迭代的数字
|
11月前
|
存储 数据处理 数据库
结构化分析方法
1.概述 结构化方法是世界上第一个软件开发方法学,用来指导从需求分析、到设计开发各个阶段该怎么样做,采用什么样的方法,产出什么样的结果,从而保证整个软件开发周期可控。
84 0
|
JavaScript 前端开发
getMonth() 方法
getMonth() 方法
127 0
|
存储 JavaScript 前端开发
JavaScript继承的几种方法
JavaScript继承的几种方法
112 0
JavaScript继承的几种方法
|
Java 开发者
|
安全 Java
浅析ThreadList的runcheckpoint方法
浅析ThreadList的runcheckpoint方法
90 0
|
测试技术 C#
分享几个实用的方法
  今天主要和大家分享的是本人总结的分页执行方法,也可以说就是分批执行;该篇采用java8新增的表达式来操作,希望能给各位带来好的帮助和在日常工作中提供便利;同样的操作流程和逻辑之前用C#代码写过一次,有需要的朋友可以看以前的博文; 分页方式拆分List为多个子集List方法 执行统一方法-无...
1176 0
|
Android开发
两个方法搞定透明状态栏
两个方法搞定透明状态栏
1442 0
|
数据库 Go
统计数据库大小的方法
原文:统计数据库大小的方法     一台服务器上所有数据库(也可能是部分数据库)的大小是我们经常需要了解的,它不仅能让我们知道目前数据库使用磁盘的比例, 而且定期搜集这些信息,还能了解数据库一段时间的数据增量,更为常用的是在做数据迁移和升级时,方便规划新服务器磁盘容量。
1246 0