Android RoboGuice使用指南(1) 概述

來源:互聯網
上載者:User

在開發應用時一個基本原則是模組化,並且近最大可能性地降低模組之間的耦 合性。在Java平台上Spring Framework 以及.Net 平台CAB ,SCSF 和Prism (WPF,Silverlight)中都有對Dependency injection 的支援。

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.bianceng.cn/OS/extra/201301/34950.htm

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.