假设我们公司有两种程序员: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#中接口的深入浅出写成,本人尊重原作者,只不过在您源程序上做了修改,可以直接运行代码。在些向源作者深深致谢。
分享到:
相关推荐
关于接口的作用,网上有一位真的深入浅出给我们做了很好理解的分析。 我们定义一个接口 public interface IBark { void Bark(); } 再定义一个类,继承于IBark,并且必需实现其中的Ba
本书是经典教程的全面升级,通过许多精彩的示例介绍了c# 语言的每个新特性,深入浅出地讲解了c# 语言的核心概念,以及如何聪明地应用c# 的习惯用法和面向对象的设计模式来挖掘c# 和clr 的能力。这一版还介绍了c# 4.0...
本书是经典教程的全面升级,通过许多精彩的示例介绍了c# 语言的每个新特性,深入浅出地讲解了c# 语言的核心概念,以及如何聪明地应用c# 的习惯用法和面向对象的设计模式来挖掘c# 和clr 的能力。这一版还介绍了c# 4.0...
《C#程序设计与应用》的示例代码,从C#的各个知识点出发,精心设计各示例代码,深入浅出,是学习C#的好帮手,供各位初学者使用学习交流,如需传播请保留代码文件中的说明信息。谢谢!
深入浅出.net学习,初学者必修教程. IS与AS ,接口和抽象类,特性和属性,CLASS和STRUCT ,base和this
《C程序设计语言》(第2版新版)讲述深入浅出,配合典型例证,通俗易懂,实用性强,适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。《C程序设计语言》...
深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...
9:采用Messenger的弹出滑动消息提示框. 10:下载管理,虚拟文件夹. 11:自动ping. 12:连接到搜索引擎. 13:自动报告bug,建议等. 14:宏功能. 15:自动同步文件夹. 16:保存加载任务. 17:计划任务. 18:单线程下载时不能创建...
《OpenCV3编程入门》以当前最新版本的OpenCV最常用最核心的组件模块为索引,深入浅出地介绍了OpenCV2和OpenCV3中的强大功能、性能,以及新特性。书本配套的OpenCV2和OpenCV3双版本的示例代码包中,含有总计两百多个...
vc++动态链接库(dll)编程深入浅出 内含开发文档。主要是对动态链接库的教程。 vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 ...
vc++动态链接库(dll)编程深入浅出 内含开发文档。主要是对动态链接库的教程。 vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 ...
vc++动态链接库(dll)编程深入浅出 内含开发文档。主要是对动态链接库的教程。 vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 ...
vc++动态链接库(dll)编程深入浅出 内含开发文档。主要是对动态链接库的教程。 vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 ...
vc++动态链接库(dll)编程深入浅出 内含开发文档。主要是对动态链接库的教程。 vc++动态链接库编程之DLL典型实例源代码下载 VC++仿Dreamweaver取色器源代码 VC++挂机锁屏系统源程序 VC++建立桌面或开始菜单快捷方式 ...