29 接口、依赖反转、单元测试

29 接口、依赖反转、单元测试,第1张


abstract 中的抽象方法只规定了不能是 private 的,而接口中的“抽象方法”只能是 public 的。

这样的成员访问级别就决定了接口的本质:接口是服务消费者和服务提供者之间的契约。

既然是契约,那就必须是透明的,对双方都是可见的。

接口是纯虚方法,抽象方法稍微具体一些(根据上图轮廓虚线的程度)


谁依赖谁,便用箭头指向谁,使用接口时,依赖者画在了下方,箭头方向反转,称为依赖反转
(虚函数也有类似效果)

单位测试
创建用于测试的命名空间

namespace watch_learn_CSharp.Tests
{
    public class Demo_InterfaceTest
    {
        [Fact]
        public void PowerLowerThanZero_OK()
        {
            
            PowerSupplyLowerThanZero powerSupplyLowerZero = new PowerSupplyLowerThanZero();
            var fan = new DeskFan(powerSupplyLowerZero);
            var actual = fan.Work();
            var expected = "Won't work";
            Assert.Equal(actual, expected);
        }

        [Fact]
        public void PowerHigherThan200_Warning()
        {
            PowerSupplyHignerThan200 powerSupplyHignerThan200 = new PowerSupplyHignerThan200();
            var fan = new DeskFan(powerSupplyHignerThan200);
            var actual = fan.Work();
            var expected = "Warning";
            Assert.Equal(actual, expected);
        } 
    }

    class PowerSupplyLowerThanZero : IPowerSupply
    {
        private int _power = 0;
         
        public int Power
        {
            get { return _power; }
            set { _power = value; }
        }
         
        public int GetPower()
        {
            return Power;
        }
    }

    class PowerSupplyHignerThan200 : IPowerSupply
    {
        private int _power = 300;

        public int Power
        {
            get { return _power; }
            set { _power = value; }
        }

        public int GetPower()
        {
            return Power;
        }
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/720965.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存