Android RoboGuice使用指南(4) Linked Bindings

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);     

}     

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索class
, 图形
, color
, graphics
, 类型
, pen d微信
, 环境二维码软件link
, 搭桥引路
二维
roboguice、roboguice3.0 使用、guice、guice 教程、google guice,以便于您获取更多的相关知识。

时间: 2024-10-31 11:01:02

Android RoboGuice使用指南(4) Linked Bindings的相关文章

Android RoboGuice使用指南(10) Just-in-time Bindings

Injector 通过检查bindings 定义来创建某个类型的实例对象.定义在Module 中的绑定称为"明确声明绑定(Explicit bindings".Injector 会首先使用带 有Explicit Bindings为某个类型创建实例对象. 当但某个类型没有明确定义绑 定时,Injector 试图构造"即时绑定(Just-in-time Bindings),JIT Bindings 也成为隐含绑定(implicit bindings). Eligible Cons

Android RoboGuice使用指南(6) Instance Bindings

我们在前面例子Android RoboGuice 使用指南(4):Linked Bindings 时为简单 起见,定义MyRectangle和MySquare时为它们定义了一个不带参数的构造函数,如 MyRectangle的如下: public class MyRectangle extends Rectangle{ public MyRectangle(){ super(50,50,100,120); } public MyRectangle(int width, int height){ s

Android RoboGuice使用指南(8) Provider Bindings

如果@Provides方法很复杂的话,可以将这些代码移动到单独的类中.这个类 需要实现Guice的Provider 接口,该接口定义如下 public interface Provider<T> { T get();} 为一个generic 接口. 本例我们定义一个PathProvider,用于 返回一个Path对象: public class PathProvider implements Provider<Path>{ private String pathdata = &qu

Android RoboGuice使用指南(9) Untargetted Bindings

在创建Bindings时,也可以不给出绑定的目标,通常用于含有@ImplementedBy 和@ProvidedBy (后面介绍)的实类(Concrete classes 或type). Untargeted bindings 目的是通知Injector 某个类类型,从而Injector可以预先准备某个依 赖.Untargetted Bindings不含to语句. 例如: bind (MyConcreteClass.class); bind(AnotherConcreteClass.class)

Android RoboGuice使用指南(15) Inject Context

在Android应用程序中,很多地方需要引用到Context对象(Activity, Application,Service等).Roboguice 使得引用Context对象变得非常容易. 可以参见下面例子,这里定义一个不在Activity中的类ContextInfo,需 要引用Context对象: class ContextInfo{ final Context context; @Inject ContextInfo(Context context){ this.context=conte

Android RoboGuice使用指南(14) Inject View

在例子Android RoboGuice 使用指南(2):第一个例子Hello World 介绍了使用 Roboguice开发的基本步骤: 创建一个RoboApplication 的子类GuiceApplication,GuiceApplication为 Appliacation的子类,修改AndroidManifest.xml,将Application 的name 指向这 个类. 将原先由Activity派生的类基类改为RoboActivity(或其它相关 Activity). 如果有需要的话

Android RoboGuice使用指南(13) RoboGuice功能描述

前面在Android RoboGuice 使用指南(1):概述 对应Roboguice做了简要的介绍 ,之后介绍了Google Guice的基本用法,Roboguice是基本Android和Google Guice开发的适用于Android平台的Dependency Injection 开发包,下图为使用 Roboguice开发应用的基本框图: Android应用程序可以直接使用Google Guice来为普通类进行注入操作,而对 和Android平台相关的类如Activity,Context,

Android RoboGuice使用指南(3) Bindings 概述

一个应用中类于类之间的依赖关系可能非常复杂,创建于个类实例,需要先创 建类所依赖的类的示例,而创建所依赖类的实例,这些类又可能依赖其它类,以 此类推.因此在创建一个类实例时,你正在需要创建的是一个对象图对象(Object Graph). 手工创建Object Graph 是一个非常繁琐而且容易出错的过程, 并且很难对代码进行测试,而Guice或Roboguice可以帮助你创建Object Graph, 所要做的工作是配置类和类之间的依赖关系. 模块(Modules) 是Guice 构 造Obje

Android RoboGuice使用指南(5) Binding Annotations

有些情况需要将同一类型映射到不同的类实现,还是使用绘图的例 子. IShape, Rectangle, MyRectangle, MySquare,有如下继承关系: 我们可能需要将IShape 同时映射到 MyRectangle 和MySquare ,这时可以使用Binding Annotation 来实现. 这时使 用类型和annotation (标注)可以唯一确定一个Binding.Type 和annotation 对 称为Key(键). 为了同时使用MyRectangle和MySequar