class clsProject()
{
....
WritePrograme(IProgramer programer) //IProgramer为一个接口
{
programer.WriteCode();//调用相应的类的方法
}
......
}
假设我们公司有两种程序员: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这个类封成一个组件,那么当我们的用户需要要扩充功能的时候,我们只需要在外部做很小的修改就能实现,可以说根本就用不着改动我们已经封好组件!是不是很方便,很强大!接口使用例子,阐述接口的优点、作用
分享到:
相关推荐
下面,我们将深入讲解这个过程,并结合实际例子“CInvokJava”来阐述。 1. **JNI简介** JNI是一种框架,它为Java应用程序提供了与本地代码(如C++)进行交互的能力。通过JNI,我们可以编写C++函数,然后在Java代码...
这个“jna小例子”可能是一个示例项目,展示了如何使用JNA与C或C++编写的DLL(动态链接库)进行交互。下面将详细阐述JNA的相关知识点。 ### JNA简介 JNA提供了一种方便的机制,使得Java程序可以无缝地访问本地库中...
在这个例子中,`Animal`是产品接口,`Dog`和`Cat`是具体产品,而`AnimalFactory`是工厂类。客户端代码可以通过调用`AnimalFactory::createAnimal()`方法来获取所需的动物对象,而无需关心对象的创建细节。 ### 4. ...
【标题】"ACCP5.0深入.NET 简单工厂例子与使用" 【描述】在.NET开发领域,ACCP5.0是一个针对初学者到专业开发者的学习路径,旨在提升编程技能和理解能力。简单工厂模式是面向对象设计模式中的一个基础概念,它在...
下面将详细阐述PHP接口`interface`存在的意义以及如何使用。 首先,我们来看一下给出的代码示例: ```php interface Ipay { function withmoney(); // function withinternet(); } class Dmeng implements Ipay...
本篇将深入探讨HGE引擎在游戏开发中的应用,通过一个简单的实例来阐述其核心概念和技术要点。 一、HGE引擎概述 HGE引擎是基于DirectX技术构建的,它提供了丰富的游戏开发工具和API,包括图形渲染、声音处理、文件...
泛型是Java SE 5.0引入的新特性,它允许在定义类、接口和方法时使用类型参数,从而提高代码的类型安全性和可读性。泛型的主要优点是可以避免强制类型转换,并在编译时检查类型安全。例如,你可以定义一个泛型类`...
总结来说,"DLL例子程序"提供了一个实践性的教学案例,通过VS2010创建和使用DLL,帮助开发者掌握如何在实际项目中利用DLL来实现代码复用和模块化。通过分析和运行“VCDLL”项目,你可以深入理解DLL的工作原理,以及...
本设计报告介绍了一种基于 FPGA 的温度检测系统设计,使用数字温度传感器 DS18B20 的数据接口和特点,阐述了一种基于 FPGA 控制 DS18B20 的方法,该设计具有读数方便、测温范围广、测温准确等优点,主要用于对测温...
在上述内容中,通过遥控无人机的例子来阐述了外观模式的应用。 1. **外观模式的概念**: 外观模式,又称为门面模式,其核心思想是将一组子系统的接口集成到一个高层接口中,为用户提供一个简化的、一致的使用界面...
这些配置文件和代码会详细阐述如何进行S2SH的整合,以及如何使用注解进行配置,如何处理JSON数据,以及如何设计和实现泛型Dao。通过深入学习和实践这些内容,开发者可以更好地理解和掌握企业级Java Web应用的开发...
根据提供的文档概览,我们可以对每个章节所涉及的设计模式进行详细的阐述和解释。下面将针对文档中提及的设计模式逐一展开,以便更好地理解这些模式的概念、结构、应用场景以及优缺点。 ### 1. 面向对象程序设计...
Spring支持JDK Proxy和CGLIB两种方式实现AOP代理,对于实现了接口的类,优先使用JDK Proxy;对于未实现接口的类,Spring会自动切换到CGLIB。 在上述小明购买香水的例子中,我们可以看到: - 定义了一个`...
1. **抽象方法和抽象类的概念**:解释了抽象方法的定义和作用,以及抽象类的基本概念,包括为何我们需要使用抽象类。 2. **继承与多态**:讲解了如何通过继承抽象类实现多态性,展示了如何使用父类引用操作不同子类...
对于装饰者模式,书可能会用一个具体的例子,比如咖啡和其配料,来阐述。在这个例子中,咖啡是基础组件,而糖、奶油等就是装饰者。每种配料(装饰者)都包装了一个咖啡对象,并增加了额外的味道或价格。 装饰者模式...
例如,在Head First的书中,可能通过一个简单的例子来阐述策略模式,如一个购物车系统,其中有不同的折扣策略(如满减、打折、买一赠一等)。上下文类可能是`ShoppingCart`,它拥有一个策略接口,如`...
例如,在给定的例子中,`Order`接口定义了`execute()`方法,每个命令类(如`BuyStock`和`SellStock`)必须实现这个方法来执行相应的操作。 2. **具体命令(Concrete Command)**:这是命令模式的核心,实现了命令...
在本文中,我们将深入探讨单片机最小系统的核心组成部分,并通过实际应用例子来阐述其工作原理和设计思路。 首先,单片机最小系统通常包括以下几个关键部件: 1. **电源电路**:单片机工作的能源,一般由直流电源...
以一个简单的例子来阐述工厂方法模式的实现。假设我们需要创建不同类型的交通工具,如汽车和自行车。我们可以定义一个交通工具接口`Vehicle`,然后创建两个具体的产品类`Car`和`Bike`。接着,定义一个`...
ADO 的主要优点是易于使用、速度快、内存占用低和磁盘 I/O 性能好。 #### 三、ADO 技术的重点阐述 ADO 作为最新的数据库访问技术,因其高效性和易于使用的特性而备受青睐。ADO 的核心对象包括: - **Connection**...