zoukankan      html  css  js  c++  java
  • 31天重构学习笔记17. 提取父类

    概念:本文中的“提取父类”是指类中有一些字段或方法,你想把它们提取到父类中以便同一继承层次的其它类也可以访问他们,这个和之前的很多重构有异曲同工之处。

    正文:Dog 类中的EatFood和Groom有可能被其他类用到,因为他们都是动物的一些公有性质,所以这个时候我们就会考虑对它进行提炼。

    namespace LosTechies.DaysOfRefactoring.ExtractSuperclass.Before
    {
    public class Dog
    {
    public void EatFood()
    {
    // eat some food
    }

    public void Groom()
    {
    // perform grooming
    }
    }
    }

    代码如下所示,提取了Animal 方法来封装公用的EatFood和Groom类,从而使其他继承了Animal 类的子类都可以使用这两个方法了。

    namespace LosTechies.DaysOfRefactoring.ExtractSuperclass.After
    {
    public class Animal
    {
    public void EatFood()
    {
    // eat some food
    }

    public void Groom()
    {
    // perform grooming
    }
    }

    public class Dog : Animal
    {
    }
    }

    总结:这个重构是典型的继承用法,很多程序员都会选择这样做,但是要注意正确的使用,不要造成过度使用了继承,如果过度使用了,请考虑用接口、组合和聚合来实现。

  • 相关阅读:
    zkw费用流
    luogu5212/bzoj2555 substring(后缀自动机+动态树)
    后缀数据结构模板2
    后缀数据结构模板1
    通用动态树(Link-Cut Tree)模板
    上下界网络流总结
    多项式多点求值
    拉格朗日反演
    多项式板子·新
    luogu2387 [NOI2014]魔法森林
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892603.html
Copyright © 2011-2022 走看看