曾今在学习AS3代码的时候,书本上有提过关于接口这样的技术。但实际中接触的不多,原因大概是 底层框架已经是被写好,而自己的话接触的确实较少。而自己的小项目 更是犯不着用这个。一直搁着,也没怎么去弄。一度觉得可有可无的一种技术。直到今天用了之后,才觉得是个不错的东东,便做一记录。好了,闲话少说,正题开始。

接口是什么?

通俗的比喻就是,把一堆相关性不是很强的东西,通过接口来达到一定的归纳。

现实例子就是,U盘与支持U盘的电子设备,以及USB数据线之类的。因为大家都实现一种规定的接口,所以能够在一台电脑上支持所有实现了此接口的U盘。同理 一个U盘也可以在各种不同的实现了此接口的设备上工作。

接口定义关键字  interface

接口实现关键字 implements

下面就以U盘和电脑的关系来练习下

IUSB_3_0接口类

IUSB_2_0接口类

ISellPlat接口类

AplleDisk类实现了IUSB3 IUSB2接口 由于其具有售卖的性质 所以同时实现了ISellPlat接口

TomatoDisk类只实现了IUSB2接口,所以这个U盘是不能插入某台电脑的USB3插口的 因为具有售卖的性质 所以同时实现了ISellPlat接口

RiceDisk类 此U盘实现了USB3接口,可以插进电脑的USB3插口,同时具有售卖性质 所以实现了ISellPlat接口

下面是电脑类,没有使用电脑基类。为了方便起见 省去了 基类的继承

DogPc类 这是一台电脑 具有售卖的性质 所以同样实现了ISellPlat接口,同时这台电脑上面支持含有USB3的插口,可以对USB3的U盘进行操作

CatPc类 这台电脑具有售卖的性质 所以同样实现了ISellPlat接口,此电脑只包含一个USB2插口。只能插入USB2的U盘

主类 假设这是一个电子产品售卖处 有电脑和U盘售卖 所以 包含一个价格提示平台sellItem

运行结果:

CatPc从USB2.0接口 读取U盘
我是AppleDisk 实现了 IUSB2.0 IUSB3.0接口 此方法实现了是IUSB2.0
———————————————————-
DogPc从USB3.0接口 读取U盘
我是AppleDisk 实现了 IUSB2.0 IUSB3.0接口 此方法实现了是IUSB3.0
———————————————————-
CatPc从USB2.0接口 读取U盘
我是TomatoDisk 实现了IUSB2.0接口
———————————————————-
DogPc从USB3.0接口 读取U盘
我是RiceDisk 实现了USB3.0接口
———————————————————-
CatPc 售价 ¥3000
———————————————————-
DogPc 售价 ¥2000
———————————————————-
AppleDisk 售价 ¥200
———————————————————-
RiceDisk 售价 ¥130
———————————————————-
TomatoDisk 售价 ¥100

实现的接口的物品也并非不具有相同性,其肯定是包含有一定的相关性的。正如上面的 电脑和U盘 都是商品可以售卖,如果这样的话,那么和继承有何区别? 其实的话,所有的东西 都有相同点,正如AS3中的所有类的最顶层的基类都是Object。但接口的话,能够避免比较臃肿的继承,而且接口能够实现多个,而继承却只能有一个。

 Demo

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Free Web Hosting