欢迎光临
我们一直在努力

学习笔记-Mixin类和多重继承-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

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类来实现多重集成

在很多地方对你的设计还是很有帮助的。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 学习笔记-Mixin类和多重继承-JSP教程,Java技巧及代码
分享到: 更多 (0)