zoukankan      html  css  js  c++  java
  • 31天重构学习笔记21. 合并继承

    概念:本文中的”合并继承”是指如果子类的属性和方法也适合于基类,那么就可以移除子类,从而减少依赖关系。

    正文:上一篇我们讲到“提取子类”重构是指当基类中的一个责任不被所有的子类所需要时,将这些责任提取到合适的子类中。而我们今天所要讲的的“合并继承”重构一般用在当我们觉得不需要子类的时候。

    如下代码所示,StudentWebSite子类除了有一个属性用来说明网站是否是活动的外没有别的责任,在这种情形下我们意识到IsActive属性可以应用到所有的网站,所以我们可以将IsActive属性上移到基类中,并去掉StudentWebSite类。

    using System.Collections.Generic;
    
    namespace LosTechies.DaysOfRefactoring.SampleCode.CollapseHierarchy.Before
    {
        public class Website
        {
            public string Title { get; set; }
            public string Description { get; set; }
            public IEnumerable<Webpage> Pages { get; set; }
        }
    
        public class StudentWebsite : Website
        {
            public bool IsActive { get; set; }
        }
    }
    重构后的代码如下: 
    using System.Collections.Generic;
    
    namespace LosTechies.DaysOfRefactoring.SampleCode.CollapseHierarchy.After
    {
        public class Website
        {
            public string Title { get; set; }
            public string Description { get; set; }
            public IEnumerable<Webpage> Pages { get; set; }
            public bool IsActive { get; set; }
        }
    }

    总结: 这篇和上篇其实最主要论述了子类和父类的继承关系以及如何判断什么时候需要使用继承,一般我们都能处理好这些关系,所以相对比较简单。

     
  • 相关阅读:
    Realtime crowdsourcing
    maven 常用插件汇总
    fctix
    sencha extjs4 command tools sdk
    首次吃了一颗带奶糖味的消炎药,不知道管用不
    spring mvc3 example
    ubuntu ati driver DO NOT INSTALL recommand driver
    yet another js editor on windows support extjs
    how to use springsource tools suite maven3 on command
    ocr service
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2892611.html
Copyright © 2011-2022 走看看