| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
12年前发布

Android上的Guice IOC框架 RoboGuice

在开发应用时一个基本原则是模块化,并且近最大可能性地降低模块 之间的耦合性。在Java平台上Spring Framework 以及.Net 平台 CAB ,SCSF 和Prism (WPF,Silverlight)中都有对Dependency injection 的支持。

Android上的Guice IOC框架 RoboGuice

Dependency injection 大大降低了类之间的依赖性,可以通过annotation (Java)或是SeviceDepdendcy (.Net) 描述类之间的依赖性,避免了直接调用类似的构造函数或是使用Factory来参加所需的类,从而降低类或模块之间的耦合性,以提高代码重用并增强代码的可 维护性。

Google Guice提供了Java平台上一个轻量级的 Dependency injection 框架,并可以支持开发Android应用。本指南将使用Android平台来说明Google Guice的用法。

简单的来说:Guice 降低了Java代码中使用 new 和 Factory函数的调用。可以把Guice 的@Inject 看作 new 的一个替代品。使用Guice可能还需要写一些Factory方法,但你的代码不会依赖这些Factory方法来创建实例。 使用Guice 修改代码,单元测试已经代码重用变得更容易。

RoboGuice 为Android平台上基于Google Guice开 发的一个库,可以大大简化Android应用开发的代码和一些繁琐重复的代码。比如代码中可能需要大量使用findViewById在XML中查找一个 View,并将其强制转换到所需类型,onCreate 中可能有大量的类似代码。RoboGuice 允许使用annotation 的方式来描述id于View之间的关系,其余的工作由roboGuice库来完成。比如:

class AndroidWay extends Activity {   TextView name;   ImageView thumbnail;   LocationManager loc;   Drawable icon;   String myName;     public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);   name      = (TextView) findViewById(R.id.name);   thumbnail = (ImageView) findViewById(R.id.thumbnail);   loc       = (LocationManager) getSystemService(Activity.LOCATION_SERVICE);   icon      = getResources().getDrawable(R.drawable.icon);   myName    = getString(R.string.app_name);   name.setText( "Hello, " + myName );   }  }

如果使用roboguice 来写:

class RoboWay extends RoboActivity {   @InjectView(R.id.name)             TextView name;   @InjectView(R.id.thumbnail)        ImageView thumbnail;   @InjectResource(R.drawable.icon)   Drawable icon;   @InjectResource(R.string.app_name) String myName;   @Inject                            LocationManager loc;     public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);   name.setText( "Hello, " + myName );   }  }

只需使用@InjectView 来描述 view 和Id之间的关系,RoboGuice 自动完成余下的工作,代码简洁易读。在介绍完Google Guice ,再接着介绍RoboGuice 在Android平台上使用方法。

参考地址:http://www.imobilebbs.com/wordpress/?p=2480  http://www.cnblogs.com/xiongbo/archive/2011/05/31/2063355.html

项目主页:http://www.open-open.com/lib/view/home/1350275341399

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1350275341399.html
Android 面向方面AOP/IoC