当前位置: 首页 > news >正文

重构第4天:降低方法(Push Down Method)

理解:降低方法,就是把基类中的某个方法,提出来放到继承类当中去。

详解: 上一节我们讲了方法的提公,是把多于一个继承类都要用到的方法,提出来放到基类中去,来提高代码的可维护性和重用性。那么这一节,我们所讲述的正好相反。就是把基类中不常用的方法,或者只有某个继承类会用到的方法,踢出去,搬移到需要他的类中去,来让结构更清晰,提高代码的可读性。

重构前代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace _31DaysRefactor
 7 {
 8    public abstract  class Animal{
 9 
10        public void Bark()
11        {
12 
13            //code to bark
14        }
15    }
16 
17 
18    public class Dog : Animal
19    {
20 
21    }
22 
23    public class Cat : Animal
24    {
25 
26    }
27 }

比如 在基类中的方法Bark  ,在继承类中,只有Dog类需要,因为只有狗才能叫狗吠。而Cat类根本不需要该方法。所以直接把Bark方法提到Dog类中去,让结构更清晰,更容易理解。

重构后的代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace _31DaysRefactor
 7 {
 8    public abstract  class Animal{
 9 
10       
11    }
12 
13 
14    public class Dog : Animal
15    {
16        public void Bark()
17        {
18 
19            //code to bark
20        }
21    }
22 
23    public class Cat : Animal
24    {
25 
26    }
27 }

当然,这些是简单的重构方法,什么时候该用什么时候不该用,都要视具体情况决定,也不能一味的乱用。

 

转载于:https://www.cnblogs.com/yplong/p/5285371.html

相关文章:

  • [基础] 重载的时候什么时候用引用
  • 技术架构的关注点
  • 在线生成GIF文件
  • 给厕所换了一个排污管
  • CocoaPods简单配置。
  • Java8:使用Lambda表达式增强版Comparator排序
  • Java注解
  • Linux内核分析5
  • C#基础知识点
  • 不用bootstrap,只用CSS创建网格布局
  • 次小生成树模板
  • 最大非连续子序列
  • MongoDB 数据库安装
  • 返回一个整数数组中最大子数组的和
  • 魔兽登录系统
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Apache的基本使用
  • CentOS 7 防火墙操作
  • Docker 笔记(2):Dockerfile
  • Github访问慢解决办法
  • HTTP 简介
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Mocha测试初探
  • PAT A1092
  • Python3爬取英雄联盟英雄皮肤大图
  • storm drpc实例
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • webpack入门学习手记(二)
  • 大数据与云计算学习:数据分析(二)
  • 用jQuery怎么做到前后端分离
  • nb
  • 你对linux中grep命令知道多少?
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • 选择阿里云数据库HBase版十大理由
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • "无招胜有招"nbsp;史上最全的互…
  • (5)STL算法之复制
  • (C语言)球球大作战
  • (超详细)语音信号处理之特征提取
  • (二)hibernate配置管理
  • (四)JPA - JQPL 实现增删改查
  • (四)linux文件内容查看
  • (转)Google的Objective-C编码规范
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • []error LNK2001: unresolved external symbol _m
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [BZOJ3211]:花神游历各国(小清新线段树)