zoukankan      html  css  js  c++  java
  • 代码重构之委派代替继承【组合代替继承】

    核心:继承应该是在存在逻辑关系的环境中使用,而不是出于方便的目的。没有意义的继承用委派替代【用组合替代继承】,这样可以避免类中增加额外没有意义的接口。

    代码演示:

    1、代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ReplaceInheritanceWithDelegation
    {
        /// <summary>
        /// 小鸟
        /// </summary>
        public class Bird
        {
            public void Fly()
            {
                Console.WriteLine("在蓝天上飞翔~~");
            }
        }
        /// <summary>
        /// 飞机
        /// </summary>
        public class Airplane
        {
            private Bird bird { get; set; }
           
            public Airplane()
            {
                bird = new Bird();
            }
    
            public void Fly()
            {
                bird.Fly();
            }
        }
    }
    View Code

    2、客户端

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ReplaceInheritanceWithDelegation
    {
        class Program
        {
            /// <summary>
            /// 飞机和小鸟都能飞,但是飞机不是鸟,所以不能直接使用继承去使用鸟的飞翔的接口
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                Bird bird = new Bird();
                bird.Fly();
                Airplane airplace = new Airplane();
                airplace.Fly();
                Console.ReadKey();
            }
        }
    }
    View Code

    结果展示:

    写写博客,方便自己也方便需要的人~~

  • 相关阅读:
    参考SQLHelper编写的OracleHelper
    微软原版SQLHelper类
    AppFabric 版本区分
    ASP.NET (HttpModule,HttpHandler)
    ASP.NET内部原理(HttpHandler和HttpModule)
    IIS 7.0, ASP.NET, pipelines, modules, handlers, and preconditions
    理解I/O Completion Port
    asp.net mvc跨域filter
    c#生成MD5字符串
    生成格式化的json
  • 原文地址:https://www.cnblogs.com/Yisijun/p/13578094.html
Copyright © 2011-2022 走看看