快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

学习笔记-Mixin类和多重继续

Mixins and Introductions
很多人说道AOP,都以为AOP就是截取器,切入点表达式,方面和实现(advices)。其实AOP
不止这些,另外一个很重要的功能在JBOSS AOP里面就是可以透明的给JAVA类传入接口。你
可以强制一个类实现的接口,甚至你可以附加另外的类(mixins)来实现这个接口。就像C++
里面的多重集成。

引入
首先我们介绍怎么强制现有的类来实现你希望它实现的接口。
首先的例子是让一个非可持久化类实现持久化能力。这对你将是十分有用的代码。

public class POJO
{
private String field;
}

要使它可以持久化很简朴。
<introduction class="POJO">
<interfaces>java.io.Serializable</interfaces>
</introduction>

上面的XML定义让AOP框架知道你要把Serializable接口应用到你的类中。在这里你可以自由的
增加任何接口到你的类上,只需要添加interfaces元素就可以了。
假如你的类没有实现接口,AOP框架会增加实现的方式给你的类。这些方式会委派给AOP框架,但
需要使用截取器或实现来进行维护,否则NullPointerException会抛出。

Mixin It Up
引入接口只是限制你,在实现接口时,假如你的类没有实现,就用内部的截取器或实现来实现。这
个地方就是Mixin要用的地方了。AOP框架答应你定义Mixin类来实现你要实现的接口。这个类的实例化
将在你首次调用引入接口的方式的时候。

继承我们使用一个Externalizable 类来实现java.io.Externalizable 这个接口。

public class POJO
{
private String field;
}

要让他实现externalizable很简朴

<introduction class="POJO">
<mixin>
<interfaces>
java.io.Externalizable
</interfaces>
<class>ExternalizableMixin</class>
<construction>new ExternalizableMixin(this)</construction>
</mixin>
</introduction>

和上面相同这里只要求POJO实现一个接口,你自己可以在这里实现你的很多接口。

这里的class元素定义了实现接口externalizable的Mixin类,POJO来实现。
construction 元素答应你使用JAVA代码来定义实例化Mixin类的时候你想用的方式。JBOSS AOP
会使用一个字段使实例化的POJO持有你的实现类ExternalizableMixin的句柄。这个字段会使用
你在construction里提供的代码来进行初始化。上面的this指的就是POJO自身的实例。

最后就是你必须实现Mixin类了。
public class ExternalizableMixin implements java.io.Externalizable
{
POJO pojo;

public ExternalizableMixin(POJO pojo)
{
this.pojo = pojo;
}

public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
{
pojo.stuff2 = in.readUTF();
}
public void writeExternal(ObjectOutput out) throws IOException
{
out.writeUTF(pojo.stuff2);
}
}

多重继续 Multiple Inheritance
需要注重的一点就是Mixin使你的JAVA在内部实现了多重集成。虽然在外部你不需要直接
在XML里面映射多重集成或者声明绑定,但实际上它使你实现了多年以来C++所具有的长处。
虽然多数的专家都反对使用多重集成,但假如恰当的使用抽象的Mixin类来实现多重集成
在很多地方对你的设计还是很有帮助的。






返回类别: 教程
上一教程: java常见缩略词及英文对照
下一教程: 转:学不会的JAVA,消不了的忧愁!(1)

您可以阅读与"学习笔记-Mixin类和多重继续"相关的教程:
· java学习笔记
· java虚拟机学习笔记1
· java 学习笔记
· 扬扬的J2EE学习笔记(五)Installing J2EE SDK(安装J2EE SDK)
· 我的Thinking in Java学习笔记(十)
    微笑服务 优质保证 索取样品