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;
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)