`
wsql
  • 浏览: 11793798 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    C#接口作用的深入理解

    关于接口的作用,网上有一位真的深入浅出给我们做了很好理解的分析。  我们定义一个接口  public interface IBark  {  void Bark();  }  再定义一个类,继承于IBark,并且必需实现其中的Ba

    C# 4.0捷径教程 中文版 part2

    本书是经典教程的全面升级,通过许多精彩的示例介绍了c# 语言的每个新特性,深入浅出地讲解了c# 语言的核心概念,以及如何聪明地应用c# 的习惯用法和面向对象的设计模式来挖掘c# 和clr 的能力。这一版还介绍了c# 4.0...

    C# 4.0捷径教程 中文版 part1

    本书是经典教程的全面升级,通过许多精彩的示例介绍了c# 语言的每个新特性,深入浅出地讲解了c# 语言的核心概念,以及如何聪明地应用c# 的习惯用法和面向对象的设计模式来挖掘c# 和clr 的能力。这一版还介绍了c# 4.0...

    C#程序设计与应用示例代码

    《C#程序设计与应用》的示例代码,从C#的各个知识点出发,精心设计各示例代码,深入浅出,是学习C#的好帮手,供各位初学者使用学习交流,如需传播请保留代码文件中的说明信息。谢谢!

    .NET技术大全.c#学习指导书

    深入浅出.net学习,初学者必修教程. IS与AS ,接口和抽象类,特性和属性,CLASS和STRUCT ,base和this

    C程序设计语言(第2版·新版中文)

    《C程序设计语言》(第2版新版)讲述深入浅出,配合典型例证,通俗易懂,实用性强,适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。《C程序设计语言》...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    vc++ 开发实例源码包

    9:采用Messenger的弹出滑动消息提示框. 10:下载管理,虚拟文件夹. 11:自动ping. 12:连接到搜索引擎. 13:自动报告bug,建议等. 14:宏功能. 15:自动同步文件夹. 16:保存加载任务. 17:计划任务. 18:单线程下载时不能创建...

    《opencv3编程入门》1-11章配套代码以及相关资源 +书籍pdf

    《OpenCV3编程入门》以当前最新版本的OpenCV最常用最核心的组件模块为索引,深入浅出地介绍了OpenCV2和OpenCV3中的强大功能、性能,以及新特性。书本配套的OpenCV2和OpenCV3双版本的示例代码包中,含有总计两百多个...

    vc++ 应用源码包_1

    vc++动态链接库(dll)编程深入浅出 内含开发文档。主要是对动态链接库的教程。 vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 ...

    vc++ 应用源码包_2

    vc++动态链接库(dll)编程深入浅出 内含开发文档。主要是对动态链接库的教程。 vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 ...

    vc++ 应用源码包_6

    vc++动态链接库(dll)编程深入浅出 内含开发文档。主要是对动态链接库的教程。 vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 ...

    vc++ 应用源码包_5

    vc++动态链接库(dll)编程深入浅出 内含开发文档。主要是对动态链接库的教程。 vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 ...

    vc++ 应用源码包_3

    vc++动态链接库(dll)编程深入浅出 内含开发文档。主要是对动态链接库的教程。 vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 ...

Global site tag (gtag.js) - Google Analytics