`
taowen
  • 浏览: 192229 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java Mixin & Service Locator

阅读更多
嗯,俺就是和静态类型干上了。这次实现了两个东西,Mixin和Service Locator。代码说话:
public interface Kisser {
	void kissYourKissable();
}

public interface Kissable {
	void kiss();
}

public class Boy implements Kissable {
	public void kiss() {
		System.out.println("kiss");
	}
}

public abstract class KisserMixin implements Reborn, Kisser {
	private Kissable kissable = _(Kissable.class);
	public void kissYourKissable() {
		kissable.kiss();
	}
}

public abstract class Girl implements Kisser {

}

public class ContainerDemo extends RebornContainer {
	public ContainerDemo() {
		reg(Boy.class);
		reg(KisserMixin.class);
	}
	public static void main(String[] args) {
		new ContainerDemo().demo();
	}
	private void demo() {
		Girl girl = _(Girl.class);
		girl.kissYourKissable();
	}
}

Mixin体现在Girl implements Kisser上。在_(Girl.class)的时候,容器会把注册的Mixin给织入。Service Locator体现在private Kissable kissable = _(Kissable.class);上。因为mixin必然要导致类是abstract的,所以放弃了new,采用_(class)的办法来获得对象实例。强侵入性的代价的收益是实现了Service Locator和Mixin。
分享到:
评论
3 楼 taowen 2006-12-04  
ray_linn 写道
无所谓,对程序整体价值提升不高。

拓展思路,拓展思路而已。。。
搞J2EE的也要开拓思路嘛,像EasyMock那样搞搞语法糖不也挺好嘛。
2 楼 ray_linn 2006-12-04  
无所谓,对程序整体价值提升不高。
1 楼 acdc 2006-12-03  
路过,关注。

相关推荐

    Mixin,MIXIN是使用ASM的Java的特性/混合框架.zip

    Mixin框架是Java编程语言中的一个开源项目,它利用ASM库来实现对类的低级别修改,也就是所谓的"混合"(Mixins)。这个框架的核心概念是将功能或行为注入到目标类中,而无需继承或者使用代理模式。在游戏开发、模块化...

    ampersand-pagination-mixin:一个简单的mixin与&符一起使用,执行分页请求

    一个简单的mixin与&符集合一起使用以执行分页的请求。 该模块假定您以某种方式实现了一个宁静的方法collection.fetch()因此与完美匹配。 它通过在URI的查询组件上插入skip和limit字段来工作。 例子: var ...

    mixin_java_sdk:Mixin Client Java SDK

    Mixin Client Java SDK这里是 Mixin Client Java SDK,其它语言的 Mixin SDK:NodeJS:Go:Python:更多 Mixin 开发资源:mixin_dev_resource:MiXin_Player:Java SDK v0.2当前版本 v0.2,主要功能是 Mixin 机器人:...

    小程序mixin混入Page选项合并

    在微信小程序的开发中,`mixin` 是一种常见的代码复用机制,它允许开发者定义一组通用的方法或者属性,然后将这些通用部分混入(mix in)到不同的页面(Page)或组件(Component)中,避免了代码重复,提高了代码的...

    ymixin是来自阅文前端团队的CSS预处理器mixin库

    【ymixin:阅文前端团队的CSS预处理器mixin库详解】 在前端开发中,CSS预处理器如Sass、Less和Stylus等已经成为提升样式编写效率和代码可维护性的必备工具。ymixin,作为阅文前端团队打造的一款CSS预处理器mixin库...

    mixin白皮书

    mixin是一个闪电交易快速的点点对的数字交道项目,它拥有非常好的技术栈。

    A Swift mixin for UITableViewCells and UICollectionViewCells.zip

    A Swift mixin for UITableViewCells and UICollectionViewCells.zip,A Swift mixin for reusing views easily and in a type-safe way (UITableViewCells, UICollectionViewCells, custom UIViews, ViewControllers...

    mixin_labs-java-bot-master.zip

    mixin_labs-java-bot-master。Error:Could not install Gradle distribution from https://services.gradle.org/distribution

    modernizr-mixin, 在Sass中,针对测试的简单而全面的mixin.zip

    modernizr-mixin, 在Sass中,针对测试的简单而全面的mixin hardwarebutton混合 一种简单的DRYier测试方法,在Sass中更快更。安装要求 ruby 3.4或者 LibSass 3.2Libsass警告:在 Libsass 3.2.3中有一个已知 Bug,它...

    forge-mixin-example:在Minecraft Forge 1.12.2中使用Mixin的示例

    而Mixin是Java编程语言中的一种强大的代码注入框架,常用于Minecraft模组开发,它允许开发者无侵入地修改游戏的内部行为,而无需直接继承或修改原代码。本示例项目"forge-mixin-example"就是针对Minecraft Forge ...

    jmixer:JMixer 是 Java 语言的 mixin 机制的实现

    JMixer 是 Java 语言的 mixin 机制的实现。 @Mixin注解被定义为允许在注解类中混合注解参数中引用的类的代码。 例如,以下代码在Duck类中混合了来自Flying和Swimming类的代码。 @Mixin(value={Flying.class, ...

    mixins-for-java:Java 语言的 mixin 实现

    Java 的 Mixin 这是这篇博文的代码: : 文件夹 mixin-test 是一个 eclipse 项目。 要运行测试,请将项目导入 eclipse 并运行 com.berniecode.mixin4j.test.* 包中的运行程序类。 是的,我知道,这应该是一个 ...

    supergroup.mixin.one::spiral_shell:Mixin Super Group源代码-one source code

    supergroup.mixin.one是“ Mixin中文群”的源代码,它是基于Mixin bot的无限成员组。 注意 !!! ..../supergroup.mixin.one -service message处理消息 前端 生成静态资产cd web && npm run serve

    前端大厂最新面试题-mixin.docx

    Vue 中的 Mixin 及其应用场景 在 Vue 中,Mixin 是一种提供了方法实现的类,其他类可以访问 Mixin 类的方法而不必成为其子类。Mixin 类通常作为功能模块使用,在需要该功能时“混入”,有利于代码复用又避免了多...

    sass-resources-loader, SASS资源( 比如 变量,mixin 等等 ) 加载程序 web service.zip

    sass-resources-loader, SASS资源( 比如 变量,mixin 等等 ) 加载程序 web service : ShakaCode team availability availability availability availability 。你的团队需要我的帮助,请在上免费发送半小时的项目...

    mixin:Mix Mixin TEE-BFT-DAG网络参考实现

    混合Mixin BFT-DAG网络参考实现,受信任的执行环境尚未集成到此存储库中。开始使用按照此指南安装golang并设置GOPATH 。 $ git clone https://github.com/MixinNetwork/mixin.git$ cd mixin$ go build mixin命令既是...

    mixin:JavaScript中的原型mixin构造函数

    Mixin.js Mixin是将功能重复混合到原型JavaScript类中的简便方法。 它会自动处理覆盖的原型方法和调用构造函数的组合。 而且,它将通知已混合到另一个类中的混合构造函数。 这可用于构造依赖的混合层次结构。 安装 ...

    react-validate-mixin:react validation mixin

    #react-validate-mixin npm install react-validate-mixin或者 bower install react-validate-mixin##例子 var validate = require ( 'react-validate-mixin' ) ;var Compoent = React . createClass ( { mixins ...

    前端开源库-react-addons-pure-render-mixin

    "react-addons-pure-render-mixin"是React的一个官方加载项,它提供了一个优化性能的策略,特别是在处理大型复杂应用时。 标题中的“react-addons-pure-render-mixin”是React的一个关键特性,用于帮助开发者实现更...

    react-notify-mixin:用于通知顶级组件的 mixin

    用于通知顶级组件的 mixin。 用法 首先,使用这个 mixin 创建一个组件: var NotifyMixin = require ( 'react-notify-mixin' ) ; var MyComp = React . createClass ( { mixins : [ NotifyMixin ] , handleClick...

Global site tag (gtag.js) - Google Analytics