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#中接口的深入浅出写成,本人尊重原作者,只不过在您源程序上做了修改,可以直接运行代码。在些向源作者深深致谢。

发布了932 篇原创文章 · 获赞 391 · 访问量 330万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 鲸 设计师: meimeiellie

分享到微信朋友圈

×

扫一扫,手机浏览