`

接口使用例子,阐述接口的优点、作用

阅读更多

class clsProject()
{
   ....
   WritePrograme(IProgramer programer) //IProgramer为一个接口
   {
     programer.WriteCode();//调用相应的类的方法

   }
   ......
}

C#中接口的作用(原贴标题)from:http://www.cnblogs.com/lovewife/archive/2009/04/16/1437559.html

    假设我们公司有两种程序员:VB程序员,指的是用VB写程序的程 序员,用clsVBProgramer这个类表示;Delphi程序员指的是用Delphi写程序的程序员,用clsDelphiProgramer这个 类来表示。 每个类都有一个WriteCode()方法。定义如下:

class clsVBProgramer()
{
   ....
   WriteCode()
   {
      //用VB语言写代码;
   }
   ....
}

class clsDelphiProgramer()
{
   ....
   WriteCode()
   {
     //用Delphi语言写代码;
   }
    ....
}

现在公司来了一个项目,要求派某个程序员写一个程序。
class clsProject()
{
   ....
   WritePrograme(clsVBProgramer programer)//用VB写代码
   {
     programer.WriteCode();
   }
   WritePrograme(clsDelphiProgramer programer)//重载方法,用Delphi写代码
   {
     programer.WriteCode();
   }
......
}
在主程序中我们可以这样写:
main()
{
    clsProject proj=new   clsProject;
    //如果需要用VB写代码
    clsVBProgramer programer1=new clsVBProgramer;
    proj.WritePrograme(programer1);
    //如果需要用Delphi写代码
    clsDelphiProgramer programer2=new clsDelphiProgramer;
    proj.WritePrograme(programer2);
}

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

但是如果改用接口,就完全不一样了:
首先声明一个程序员接口:
interface IProgramer()
{
   WriteCode();
}
然后声明两个类,并实现IProgramer接口:
class clsVBProgramer():IProgramer
{
   ....
   WriteCode()
   {
      //用VB语言写代码;
   }
   ....
}

class clsDelphiProgramer():IProgramer
{
   ....
   WriteCode()
   {
     //用Delphi语言写代码;
   }
    ....
}
对clsProject这个类进行一下修改:
class clsProject()
{
   ....
   WritePrograme(IProgramer programer)
   {
     programer.WriteCode();//写代码
   }
   ......
}

main()
{
    clsProject proj=new   clsProject;
    IProgramer programer;
    //如果需要用VB写代码
    programer=new clsVBProgramer;
    proj.WritePrograme(programer);
    //如果需要用Delphi写代码
    programer=new clsDelphiProgramer;
    proj.WritePrograme(programer);    
}
如果再有C#,C,C++,JAVA这样的程序员添加进来的话,我们只需把它们相关的类加进来,然后在main()中稍做修改就OK了。扩充性特别好!

另外我们如果把clsProject这个类封成一个组件,那么当我们的用户需要要扩充功能的时候,我们只需要在外部做很小的修改就能实现,可以说根本就用不着改动我们已经封好组件!是不是很方便,很强大!接口使用例子,阐述接口的优点、作用
分享到:
评论

相关推荐

    C++调用Java接口

    下面,我们将深入讲解这个过程,并结合实际例子“CInvokJava”来阐述。 1. **JNI简介** JNI是一种框架,它为Java应用程序提供了与本地代码(如C++)进行交互的能力。通过JNI,我们可以编写C++函数,然后在Java代码...

    jna 小例子

    这个“jna小例子”可能是一个示例项目,展示了如何使用JNA与C或C++编写的DLL(动态链接库)进行交互。下面将详细阐述JNA的相关知识点。 ### JNA简介 JNA提供了一种方便的机制,使得Java程序可以无缝地访问本地库中...

    PHP 简单工厂模式例子

    在这个例子中,`Animal`是产品接口,`Dog`和`Cat`是具体产品,而`AnimalFactory`是工厂类。客户端代码可以通过调用`AnimalFactory::createAnimal()`方法来获取所需的动物对象,而无需关心对象的创建细节。 ### 4. ...

    ACCP5.0深入.NET 简单工厂例子与使用

    【标题】"ACCP5.0深入.NET 简单工厂例子与使用" 【描述】在.NET开发领域,ACCP5.0是一个针对初学者到专业开发者的学习路径,旨在提升编程技能和理解能力。简单工厂模式是面向对象设计模式中的一个基础概念,它在...

    领悟php接口中interface存在的意义

    下面将详细阐述PHP接口`interface`存在的意义以及如何使用。 首先,我们来看一下给出的代码示例: ```php interface Ipay { function withmoney(); // function withinternet(); } class Dmeng implements Ipay...

    HGE引擎开发的例子

    本篇将深入探讨HGE引擎在游戏开发中的应用,通过一个简单的实例来阐述其核心概念和技术要点。 一、HGE引擎概述 HGE引擎是基于DirectX技术构建的,它提供了丰富的游戏开发工具和API,包括图形渲染、声音处理、文件...

    java反射与泛型综合例子

    泛型是Java SE 5.0引入的新特性,它允许在定义类、接口和方法时使用类型参数,从而提高代码的类型安全性和可读性。泛型的主要优点是可以避免强制类型转换,并在编译时检查类型安全。例如,你可以定义一个泛型类`...

    DLL例子程序

    总结来说,"DLL例子程序"提供了一个实践性的教学案例,通过VS2010创建和使用DLL,帮助开发者掌握如何在实际项目中利用DLL来实现代码复用和模块化。通过分析和运行“VCDLL”项目,你可以深入理解DLL的工作原理,以及...

    基于FPGA的温度检测系统设计.pdf

    本设计报告介绍了一种基于 FPGA 的温度检测系统设计,使用数字温度传感器 DS18B20 的数据接口和特点,阐述了一种基于 FPGA 控制 DS18B20 的方法,该设计具有读数方便、测温范围广、测温准确等优点,主要用于对测温...

    15 外观模式:遥控无人机.pdf

    在上述内容中,通过遥控无人机的例子来阐述了外观模式的应用。 1. **外观模式的概念**: 外观模式,又称为门面模式,其核心思想是将一组子系统的接口集成到一个高层接口中,为用户提供一个简化的、一致的使用界面...

    S2SH整合例子 注解配置 JSON 泛型Dao

    这些配置文件和代码会详细阐述如何进行S2SH的整合,以及如何使用注解进行配置,如何处理JSON数据,以及如何设计和实现泛型Dao。通过深入学习和实践这些内容,开发者可以更好地理解和掌握企业级Java Web应用的开发...

    C#设计模式.PDF

    根据提供的文档概览,我们可以对每个章节所涉及的设计模式进行详细的阐述和解释。下面将针对文档中提及的设计模式逐一展开,以便更好地理解这些模式的概念、结构、应用场景以及优缺点。 ### 1. 面向对象程序设计...

    《剑指offer》Java代理.pdf

    Spring支持JDK Proxy和CGLIB两种方式实现AOP代理,对于实现了接口的类,优先使用JDK Proxy;对于未实现接口的类,Spring会自动切换到CGLIB。 在上述小明购买香水的例子中,我们可以看到: - 定义了一个`...

    5-Polymorphism-a-Abstract-Class.zip_class A

    1. **抽象方法和抽象类的概念**:解释了抽象方法的定义和作用,以及抽象类的基本概念,包括为何我们需要使用抽象类。 2. **继承与多态**:讲解了如何通过继承抽象类实现多态性,展示了如何使用父类引用操作不同子类...

    设计模式-装饰者模式

    对于装饰者模式,书可能会用一个具体的例子,比如咖啡和其配料,来阐述。在这个例子中,咖啡是基础组件,而糖、奶油等就是装饰者。每种配料(装饰者)都包装了一个咖啡对象,并增加了额外的味道或价格。 装饰者模式...

    StrategyPattern

    例如,在Head First的书中,可能通过一个简单的例子来阐述策略模式,如一个购物车系统,其中有不同的折扣策略(如满减、打折、买一赠一等)。上下文类可能是`ShoppingCart`,它拥有一个策略接口,如`...

    Java命令模式.docx

    例如,在给定的例子中,`Order`接口定义了`execute()`方法,每个命令类(如`BuyStock`和`SellStock`)必须实现这个方法来执行相应的操作。 2. **具体命令(Concrete Command)**:这是命令模式的核心,实现了命令...

    单片机最小系统系统典电路应用举例

    在本文中,我们将深入探讨单片机最小系统的核心组成部分,并通过实际应用例子来阐述其工作原理和设计思路。 首先,单片机最小系统通常包括以下几个关键部件: 1. **电源电路**:单片机工作的能源,一般由直流电源...

    工厂方法模式

    以一个简单的例子来阐述工厂方法模式的实现。假设我们需要创建不同类型的交通工具,如汽车和自行车。我们可以定义一个交通工具接口`Vehicle`,然后创建两个具体的产品类`Car`和`Bike`。接着,定义一个`...

    VisualC++6.0进行数据库开发常用技术及ADO应用实例

    ADO 的主要优点是易于使用、速度快、内存占用低和磁盘 I/O 性能好。 #### 三、ADO 技术的重点阐述 ADO 作为最新的数据库访问技术,因其高效性和易于使用的特性而备受青睐。ADO 的核心对象包括: - **Connection**...

Global site tag (gtag.js) - Google Analytics