Android 의 Guice RoboGuice

2654 단어
개발 응용 시 하나의 기본 원칙 은 모듈 화 이 며, 모듈 간 의 결합 성 을 최대한 낮 추 는 것 이다.자바 플랫폼 에 서 는 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 는 자바 코드 에서 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 는 남 은 작업 을 자동 으로 완성 하고 코드 가 간결 하고 읽 기 쉽다.구 글 구 이 스 를 소개 한 뒤 로 보 이 스 가 안 드 로 이 드 플랫폼 에서 사용 하 는 방법 을 소개 한다.
참고 주소:http://www.imobilebbs.com/wordpress/?p=2480  http://www.cnblogs.com/xiongbo/archive/2011/05/31/2063355.html

좋은 웹페이지 즐겨찾기