`

也谈接口编程

 
阅读更多
刚刚和大峡讨论一个问题,接口编程,这个话题也许大家比我理解多了,我提出一个自己的观点:在个人程序中空接口很少,至少我见的很少!大峡:不对,空接口很多,接口只不过是一个标识,然后我们做了一个很有意思的程序:
空接口:
package springroad.demo.taginterface;
public interface SomeThing {}
人的接口:
package springroad.demo.taginterface;
public interface Humans extends SomeThing {}
动物接口:
package springroad.demo.taginterface;
public interface Animals extends SomeThing {}
创建一系列对象:
中国人:
package springroad.demo.taginterface;
public class Chinese implements Humans {}
日本人:
package springroad.demo.taginterface;
public class Japanese implements SomeThing {}
狗:
package springroad.demo.taginterface;
public class Dog implements Animals {}
主人:
package springroad.demo.taginterface;
public class Monster implements Humans {}
,下面建立一个猎人类:
package springroad.demo.taginterface;
public class Hunter {
//智能的枪
public void intelligent(Object target)
{
if(target instanceof Animals){
System.out.println("打死了一个动物");
}
else if(target instanceof Humans)
{
System.out.println("这个是人类不能开枪的!");
}else{
System.out.println("打死一个日本人,它竟然连动物都不是,浪费了一颗子弹,唉!");}
//下面进行闪杀等相关处理
//销毁他
target=null;
}
public static void main(String[] args) {
Hunter hunter=new Hunter();
SomeThing[] objects=new SomeThing[]{new Dog(),new Chinese(),new Japanese(),new Monster()};
for(int i=0;i<objects.length;i++)
hunter.intelligent(objects[i]);
}
};
这个程序都是通过一系列的空接口来实现的,不过最后他使用一个内部类,要不new 接口就出错了,程序简单,设计颇见优雅,值得大家学习,最后输出结果是:
打死一个动物!
这个是人类不能开枪的!
打死一个日本人,它竟然连动物都不是,浪费一颗子弹,唉!
这个是人类不能开枪!
分享到:
评论

相关推荐

    浅谈Java面向接口编程

    本文通过结合接口的本质、面向对象编程与面向接口编程的关系以及一些作者自身的理解,向大家介绍了面向接口编程的一些东西,需要的朋友可以了解下。

    谈如何通过网络接口实现DSP片外Flash在线系统编程.pdf

    谈如何通过网络接口实现DSP片外Flash在线系统编程

    谈起socket编程,大家也许会想起QQ和IE,没错。

    谈起socket编程,大家也许会想起QQ和IE,没错。还有许多网络工具如P2P、NetMeeting等在应用层实现的应用程序,也是用socket来实现的。Socket是一个网络编程接口,实现于网络应用层,Windows Socket包括了一套系统...

    浅谈VB与Matlab混合编程

    为充分发挥Matlab与VB各自的优势,将二者结合起来进行工程应用软件的开发。本文介绍了五种VB与 MATLAB混合编程接口的方法,并对各方法性能的优劣进行了比较和评价。

    浅谈JavaScript中的接口实现

    在设计模式中提出的可重用的面向对象设计的原则之一就是“针对接口编程而不是实现编程”,即我们所说的面向接口编程,这个概念的重要性可见一斑。但问题在于,在JavaScript的世界中,没有内置的创建或实现接口的方法...

    从实例谈面向对象编程、工厂模式和重构

    不过不用着急,因为接口这个利器你还没有用上 (虽然你也可以用抽象类,但在 C#里只支持类的单继承)。 虽然视频和音频格式不同,别忘了,他们都是媒体中的一种,很多时候,他们有许多相似的功能,比如播 放。根据...

    从8086到Pentium Ⅲ微型计算机及接口技术1

    8.2 可编程串行通信接口芯片16550与8250 8.3 可编程并行通信接口芯片8255 8.4 可编程定时/计数器芯片8253与8254 8.5 A/D与D/A转换接口 8.6 打印机接口 8.7 显示适配器接口 8.8 软硬盘接口 8.9 调制解调器 8.10 简单...

    浅谈C#网络编程详解篇

    Socket是一种网络编程接口,它是对传输层TCP、UDP通信协议的一层封装,通过友好的API暴露出去,方便在进程或多台机器间进行网络通信。 Socket编程 在网络编程中分客户端和服务端两种角色,比如通过打开浏览器访问到...

    Python 核心编程 第二版

     8.10 再谈else语句   8.11 迭代器和iter()函数   8.12 列表解析   8.13 生成器表达式   8.14 相关模块   8.15 练习   第9章 文件和输入输出   9.1 文件对象   9.2 文件内建函数(open...

    从8086到Pentium Ⅲ微型计算机及接口技术 2

    8.2 可编程串行通信接口芯片16550与8250 8.3 可编程并行通信接口芯片8255 8.4 可编程定时/计数器芯片8253与8254 8.5 A/D与D/A转换接口 8.6 打印机接口 8.7 显示适配器接口 8.8 软硬盘接口 8.9 调制解调器 8.10 简单...

    VC与Labview、Matlab编程论文资料[2].rar

    这是VC与Labview、Matlab编程论文资料,全部为pdf格式,讲述有VC编程技巧、也有VC与Labview混合编程, VC与matlab混合编程,有365个,约500M,分成4个【独立】压缩包,如果想要全部的论文则需要下载全部压 缩包,...

    计算机科学与编程中的抽象学.pdf

    因为编程都是解决运行问题跟语言语法本身问题的双重过程,所以,对于寻求更高级的编程支持(目前我们谈到的是C这样的系统实现语言),唯有改变语言对于OS的接口(运行时),那么我们就会得到更高级的支持。...

    Python核心编程第二版

     6.18.2 元组也不是那么“不可变”   6.18.3 默认集合类型   6.18.4 单元素元组   6.18.5 字典的关键字   6.19 相关模块   6.20 *拷贝Python对象、浅拷贝和深拷贝   6.21 序列类型小结   6.22...

    嵌入式C编程经验细谈

    库对外的接口(函数名及其参数声明)是不变的,当所有常用设备都实现库化时,它带来另外一个好处,应用层的移植、创建、修改维护的时间耗费也会剧烈减少。应用层的跨平台无缝移植不是传说,当它所依赖的所有外围设备...

    [详细完整版]单片机编程.doc

    然后,你想学习单片机的话,首先你得学 习C语言编程,模拟电路,数字电路,计算机组成原理(略懂就可),微机原理与接口( 略懂就可),单片机原理与接口……不过也可以这样学,从单片机原理与接口入手,学到 哪里不...

    VB网络编程实例

    ◆ 176.htm 你也可以YAI--VB5中Winsock控件的使用 ◆ 177.htm 判断一个文件是否在IE的缓存中 ◆ 178.htm 启动拨号网络中的连接 ◆ 179.htm 浅谈HTTP协议(二)--返回值 ◆ 180.htm 浅谈...

    从8086到Pentium Ⅲ微型计算机及接口技术5

    8.2 可编程串行通信接口芯片16550与8250 8.3 可编程并行通信接口芯片8255 8.4 可编程定时/计数器芯片8253与8254 8.5 A/D与D/A转换接口 8.6 打印机接口 8.7 显示适配器接口 8.8 软硬盘接口 8.9 调制解调器 8.10 简单...

    浅谈FPGA的SPI总线接口的实现

    针对FLASH这种常用的外围存储器件,有多种接口可供选择,然而具有SPI接口的FLASH芯片硬件连接方便,通过FPGA编程可以便捷地实现FLASH的存取功能。因此基于FPGA的具有SPI总线接口的FLASH功能实现为工程设计提供了一种...

Global site tag (gtag.js) - Google Analytics