概述

继承案例代码
public class A{public void Methond1(){Console.WriteLine("我是方法1");}public void Methond2(){Console.WriteLine("我是方法2");}public void B_Methond3(){Console.WriteLine("我是方法3");}}public class B : A{public void MethondB(){}}public class C : B{public void MethondC(){}}public class D : C{public void MethondD(){}}
结论:问题是有些方法B类并不需要,然而在A类中实现后,B类都需要继承,这就是问题,导致职责不清晰,越来越臃肿!以后新增需求,像C又继承B...
关于汽车案例的需求改用合成复用原则实现
public interface IColor{public string ShowCar();}public class Green : IColor{public string ShowCar(){return "绿色";}}public class Red : IColor{public string ShowCar(){return "红色";}}//)——————————————————————————————————————————————————public abstract class Car{public abstract void Run(IColor color);}public class QyCar : Car{public override void Run(IColor color){Console.WriteLine($"汽油式的{color.ShowCar()}颜色车在行驶");}}public class DdCar : Car{public override void Run(IColor color){Console.WriteLine($"电动式的{color.ShowCar()}颜色车在行驶");}}
结论:像这个汽车行驶的需求,不管以后又有黑色的、蓝色的汽车,或者加水的汽车之类都做好了扩展,不用再使用继承去解决这个问题。
总结
关于合成复用原则在现实编码过程中,尤其对重构系统特别有用,所有的设计原则系列文章都已经更新完毕,有何疑问,欢迎交流。