02.依赖倒置原则

  • 依赖倒置原则

  • 高层模块不应该依赖于低层模块,二者都应该依赖于抽象

  • 抽象不应该依赖于细节,细节应当依赖于抽象。

  • 换言之,要面向接口(抽象类)编程,而不是面向实现编程。

namespace 依赖倒置原则
{
    public abstract class Shape
    {
       public abstract string GatPath();
    }
}
namespace 依赖倒置原则
{
    public class Circle : Shape
    {
        public override string GatPath()
        {
            return "圆形";
        }
    }
}
namespace 依赖倒置原则
{
    public class Rectangle : Shape
    {
        public override string GatPath()
        {
            return "长方形";
        }
    }
}
namespace 依赖倒置原则
{
    public class Graphice
    {
        private Shape _Shape;
        public Graphice(Shape shape)
        {
            this._Shape = shape;
        }
        public void SetShape(Shape shape)
        {
            this._Shape = shape;
        }
        public void Stroke( )
        {
            string path = _Shape.GatPath();
            Console.WriteLine($"描边{path}");
        }
        public void Fill( )
        {
            string path = _Shape.GatPath();
            Console.WriteLine($"填充{path}");
        }
    }
}

将shape作为私有的变量添加到graphics类中去。通过构造函数与Set方法对shape进行赋值。

这样做之后我们的stroke方法就不需要传参了

namespace 依赖倒置原则
{
    class Program
    {
        static void Main(string[] args)
        {
            Graphice g = new Graphice(new Rectangle());
            g.Stroke();
            g.Fill();
            g.SetShape(new Circle());
            g.Stroke();
            g.Fill();
        }
    }
}

在实例化时将子类传入Graphice,若想要更改画的图形使用set方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值