C#接口-深入浅出,这篇写得很好

假设我们公司有两种程序员:VB程序员指的是用VB写程序的程序员,用VBpro这个类表示;C程序员指的是用C写程序的程序员,用Cpro这个类来表示。每个类都有一个WriteCode()方法。

现在公司来了一个项目,要求派某个程序员写一个程序。

using System;

//vb程序员

class VBpro

{

public void WriteCode()

{

Console.WriteLine("我用vb写代码");

}

}

//c程序员

class Cpro

{

public void WriteCode()

{

Console.WriteLine("我用c写代码");

}

}

//编写项目类

class Pro

{

public void Writeprogram(VBpro programer))//用VB写代码

{

programer.WriteCode();

}

public void Writeprogram(Cpro programer)//重载方法用C写代码

{

programer.WriteCode();

}

}

//在主程序中我们可以这样写

class Program

{

static void Main()

{

Pro p = new Pro();

//如果需要用VB写代码

VBpro p1 = new VBpro();

p.Writeprogram(p1);

//如果需要用C写代码

Cpro p2 = new Cpro();

p.Writeprogram(p2);

}

}

但是如果这时公司又来了一个C#程序员,我们怎么改这段程序,使它能够实现用C#写程序的功能呢?我们需要增加一个新类C#程序员类,同时在此项目类中要再次重载WritePrograme(C#pro programer)方法。这下麻烦多了。如果还有C++程序员,JAVA程序员呢。麻烦大了!

//但是如果改用接口,就完全不一样了

using System;

//首先声明一个程序员接口

public interface IProgramer

{

void WriteCode();

}

//vb程序员

class VBpro: IProgramer

{

public void WriteCode()

{

Console.WriteLine("我用vb写代码");

}

}

//c程序员

class Cpro: IProgramer

{

public void WriteCode()

{

Console.WriteLine("我用c写代码");

}

}

//修改编写项目类

class Pro

{

public void Writeprogram(IProgramer programer)

{

programer.WriteCode();

}

}

class Program

{

static void Main()

{

Pro p = new Pro();

VBpro p1 = new VBpro();

p.Writeprogram(p1);

Cpro p2 = new Cpro();

p.Writeprogram(p2);

}

}

如果再有C#,C++,JAVA这样的程序员添加进来的话,我们只需把它们相关的类加进来,然后在main()中稍做修改就OK了。扩充性特别好!

另外我们如果把项目类封成一个组件,那么当我们的用户需要要扩充功能的时候,我们只需要在外部做很小的修改就能实现,可以说根本就用不着改动我们已经封好组件!是不是很方便,很强大!

注:本文章参考C#中接口的深入浅出写成,本人尊重原作者,只不过在您源程序上做了修改,可以直接运行代码。在些向源作者深深致谢。