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

    概念:本文中的”提取子类”是指把基类中的一些不是所有子类都需要访问的方法调整到子类中。

    正文:当你的基类中存在一些方法不是所有的子类都需要访问,你想将它们调整到子类中时,这个重构会变得很有用了。如下代码所示,我们需要一个 Registration类用来处理学生选课的信息。但是当Registration类开始工作后,我们意识到我们会在两种不同的上下文中使用Registration类,NonRegistrationAction和Notes只有在我们处理未注册情况下才用到。

    所以我们将NonRegistration和Notes提到单独的NonRegistration类中。
    using System;

    namespace LosTechies.DaysOfRefactoring.SampleCode.ExtractSubclass.Before
    {
    public class Registration
    {
    public NonRegistrationAction Action { get; set; }
    public decimal RegistrationTotal { get; set; }
    public string Notes { get; set; }
    public string Description { get; set; }
    public DateTime RegistrationDate { get; set; }
    }
    }

    重构后的代码如下所示,这样也满足面向对象五大原则之一的单一职责。同时也让类的结构变得更加清晰,增强了可维护性。

    using System;

    namespace LosTechies.DaysOfRefactoring.SampleCode.ExtractSubclass.After
    {
    public class Registration
    {
    public decimal RegistrationTotal { get; set; }
    public string Description { get; set; }
    public DateTime RegistrationDate { get; set; }
    }

    public class NonRegistration : Registration
    {
    public NonRegistrationAction Action { get; set; }
    public string Notes { get; set; }
    }
    }

    总结:这个重构方法经常用来规范类的职责,和之前的一些重构方法也有些类似。

  • 相关阅读:
    Python界面常用GUI包
    ATSC/DVB/ISDB三大标准比较
    【MPEG】DVB / ATSC / ISDB区别
    Python判断字符串是否为字母或者数字
    MApp_ZUI_CTL_MarqueeTextWinProc字串滚动
    PWM原理及其在电源中的应用
    按键板的原理与实现 扩展GPIO
    按键板的原理与实现----ADC
    使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比
    SQL Server备份还原数据库中的小把戏
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892609.html
Copyright © 2011-2022 走看看