接口

1.接口的引入:例如,我想获取Array,以及ArrayList的sum,以及avg,我就需要分别写对应的函数,总共需要写四个函数,这样会比较复杂,这个可以引入接口,因为Array和ArrayList都继承了IEnumerble接口,则可以使用IEnumble接口去实现;

 实现如下:这样只需要两个方法就可以了,

 在此还有一个知识点为:Array、ArrayList、List的区别: Array:固定大小,固定数据类型    ArrayList:可变大小、存储的数据类型是object,也就是可以同时存不同类型的数据;  List:可变大小,固定数据类型的数据;

2.依赖的示例:如下所示,Car紧紧依赖在Engine,即使Car中的写的没问题,而Engine中有问题,就比较难排查;

 3.依赖反转原则:人类一般解决问题的思维方式一般是自顶向下,逐步求精的过程,依赖倒置是为了平衡这种方式;提供一种新的思路:

  理解如下,一开始是有个dirver中有个car字段,当调用drive的时候,会调用car的run方法,driver深深依赖在了car中,如果引入接口,car的箭头从被指变成了指向接口,这就是依赖反转

 

4.接口,解耦,依赖倒置原则在单元测试中的示例:

如下是紧耦合的;

 解耦如下:

 

public interface IPowerSupply
{
int GetPower();
}
public class PowerSupply: IPowerSupply
{
public int GetPower()
{
return 100;
}
}
public class DeskFan
{
private IPowerSupply _powerSupply;
public DeskFan(IPowerSupply powerSupply)
{
_powerSupply = powerSupply;
}
public string Work()
{
int power = _powerSupply.GetPower();
if(power <= 0)
{
return "Wont work";
}else if(power < 100)
{
return "Slow";
}else if(power < 200)
{
return "Work fine";
}
else
{
return "warning";
}
}
}

posted @ 2024-07-23 00:50  你好呀嗯嗯  阅读(1)  评论(0编辑  收藏  举报