扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:李俊杰 来源:Csdn博客 2007年12月26日
关键字:
在本页阅读全文(共6页)
Tuscany中工厂设计中涉及泛型的应用
根据我们上面介绍的泛型的基础知识,下面让我们来看看SpringImplementationProviderFactory如何定义的,其中使用了泛型约束SpringImplementation。
public class SpringImplementationProviderFactoryimplements ImplementationProviderFactory<SpringImplementation> |
SpringImplementationProviderFactory另外其中有个方法非常值得注意,就是getModelType,在这儿是SpringImplementation.class。
public Class<SpringImplementation> getModelType() { |
类似的我们看ResourceImplementationProviderFactory的定义,其中使用了泛型约束ResourceImplementation。
public class ResourceImplementationProviderFactory implementsImplementationProviderFactory<ResourceImplementation> |
它同样有个方法getModelType,在这儿是ResourceImplementation.class。
public Class<ResourceImplementation> getModelType() { |
那么,这个ModeType有什么神秘的用途呢?来看DefaultProviderFactoryExtensionPoint的代码,从以下代码可以看出,在HashMap中的key值为providerFactory.getModelType(),到这儿明白了ModelType的用途了吧!
|
下面是META-INF/services/ org.apache.tuscany.sca.provide.ImplementationProviderFactory的片断,从中也可以找到model的身影,从而可以看出model泛型约束是贯穿全剧的线索。
org.apache.tuscany.sca.implementation.spring.SpringImplementationProviderFactory;model=org.apache.tuscany.sca.implementation.spring.SpringImplementation |
在Tuscany的工厂设计中都使用了类似的设计理念,使用要创建的类或者是类的接口作为其工厂HashMap中的Key,这样就能很方便地取出这个工厂,创建这个类了。从DefaultProviderFactoryExtensionPoint中的获取工厂可以看出这一点,接口或实现类都可以作为key保存到HashMap中。
|
4、结束语
以上内容仅仅涉及插件式设计模式及工厂模式的深化和发展,随后将介绍有关Proxy及invocation方面的设计理念,还有Assembly,contribute和binding的具体设计思想,最后介绍Tuscany整体架构设计思想,敬请关注。共享是我的准则,共同提高是我的目标。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者