Android RoboGuice 使用指南(4):Linked Bindings

399 篇文章 2 订阅
23 篇文章 0 订阅

Roboguice 中最常用的一种绑定为Linked Bindings,将某个类型映射到其实现。这里我们使用引路蜂二维图形库中的类为例,引路蜂二维图形库的使用可以参见Android简明开发教程八:引路蜂二维图形绘制实例功能定义

使用下面几个类 IShape, Rectangle, MyRectangle, MySquare, 其继承关系如下图所示:

下面代码将IShape 映射到MyRectangle

public class Graphics2DModule extends AbstractAndroidModule{
 
 @Override
 protected void configure() {
 
 bind(IShape.class).to(MyRectangle.class);
 
 }
}

此时,如果使用injector.getInstance(IShape.class) 或是injector 碰到依赖于IShape地方时,它将使用MyRectangle。可以将类型映射到它任意子类或是实现了该类型接口的所有类。也可以将一个实类(非接口)映射到其子类,如

bind(MyRectangle.class).to(MySquare.class);

下面例子使用@Inject 应用IShape.

public class LinkedBindingsDemo extends Graphics2DActivity{
 
@Inject IShape  shape;
 
protected void drawImage(){
 
/**
* The semi-opaque blue color in
* the ARGB space (alpha is 0x78)
*/
Color blueColor = new Color(0x780000ff,true);
/**
* The semi-opaque yellow color in the
* ARGB space ( alpha is 0x78)
*/
Color yellowColor = new Color(0x78ffff00,true);
 
/**
* The dash array
*/
int dashArray[] = { 20 ,8 };
graphics2D.clear(Color.WHITE);
graphics2D.Reset();
Pen pen=new Pen(yellowColor,10,Pen.CAP_BUTT,
Pen.JOIN_MITER,dashArray,0);
SolidBrush brush=new SolidBrush(blueColor);
graphics2D.setPenAndBrush(pen,brush);
graphics2D.fill(null,shape);
graphics2D.draw(null,shape);
 
}
 
}

使用bind(IShape.class).to(MyRectangle.class),为了简化问题,这里定义了MyRectangle和MySquare都带有一个不带参数的构造函数,注入具有带参数的构造函数类用法在后面有介绍。

public class MyRectangle extends Rectangle{
 public MyRectangle(){
 super(50,50,100,120);
 }
 
 public MyRectangle(int width, int height){
 super(50,50,width,height);
 }
}
...
public class MySquare extends MyRectangle {
 
 public MySquare(){
 super(100,100);
 }
 
 public MySquare(int width){
 super(width,width);
 }
 
}

Linked bindings 允许链接,例如


public class Graphics2DModule extends AbstractAndroidModule{
 
 @Override
 protected void configure() {
 bind(IShape.class).to(MyRectangle.class);
 bind(MyRectangle.class).to(MySquare.class);
 
 }
}


 

此时当需要IShape 时,Injector返回MySquare 的实例, IShape->MyRectangle->MySquare

本例下载


 


 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值