码迷,mamicode.com
首页 > 其他好文 > 详细

代码重构之委派代替继承【组合代替继承】

时间:2020-09-08 20:51:16      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:需要   thread   isp   plane   none   code   写博客   font   接口   

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

代码演示:

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

结果展示:

技术图片

 

 

 

 

 

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

代码重构之委派代替继承【组合代替继承】

标签:需要   thread   isp   plane   none   code   写博客   font   接口   

原文地址:https://www.cnblogs.com/Yisijun/p/13578094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!