老话重弹——再谈接口与抽象类

  1. 从依赖倒置说起

  首先,我们来看下《敏捷软件开发》中对依赖倒置的说明:

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

  b. 抽象不应该依赖于细节,细节应该依赖于抽象。

  我们先抛开第二点来看第一点,什么叫高层模块,什么叫低层模块。在我理解来看:高层模块也就是战略性模块,业务性模块。而低层模块就是战术性模块,细节类模块。

  先来看这样一段代码:

    class Person
{
private Mouth mouth;

public Person(Mouth mouth)
{
this.mouth = mouth;
}

/// <summary>
/// 吃饭
/// </summary>
public void Eat()
{
if (mouth == null)
{
throw new NullReferenceException();
}

mouth.OpenMouth();
FillMouthWithFood();
mouth.CloseMouth();
}

private void FillMouthWithFood(){ }
}

class Mouth
{
/// <summary>
/// 张嘴
/// </summary>
public void OpenMouth() { }

/// <summary>
/// 闭嘴
/// </summary>
public void CloseMouth() { }
}

it知识库老话重弹——再谈接口与抽象类,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。