Dagger을 통해 의존성 주입을 프로젝트에 소개하고 싶습니다. 다음 코드는에 주입 문제를 설명하는 예제로 사용됩니다.단검을 사용하여 정적 클래스에 주입하는 방법은 무엇입니까?
정적 메소드 setupTextView()
는 여러 클래스라고 :
public abstract class TextViewHelper {
public static void setupTextView(TextView textView,
Spanned text,
TrackingPoint trackingPoint) {
textView.setText(text, TextView.BufferType.SPANNABLE);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyApp.getTracker().track(trackingPoint);
}
});
}
}
여기 헬퍼 메소드를 사용하는 방법을 일례이다
TextViewHelper.setupTextView(this, R.id.some_text_view,
R.string.some_text,
TrackingPoint.SomeTextClick);
헬퍼 메소드에서 사용 트래킹은에 의해 제공된다 응용 프로그램 클래스 :
public class MyApp extends Application {
private static Tracking mTracking;
public void onCreate() {
super.onCreate();
mTracking = getTracking(getApplicationContext());
}
private Tracking getTracking(Context context) {
if (BuildConfig.DEBUG) {
return new NoTracking();
} else {
return new NsaTracking(context);
}
}
public static Tracking getTracker() {
return mTracking;
}
}
이제 tr 단검을 통해 acking.
TextViewHelper.setupTextView(this, R.id.some_text_view,
R.string.some_text,
TrackingPoint.SomeTextClick,
Tracking tracking);
이 좋은 디자인처럼 생각하지 않습니다 내가 코드를 리팩토링 할 때 내가 직접 정적 클래스에 주입 할 수 없기 때문에 내가 정적 도우미 내 활동이나 조각에서 추적 개체를 전달할 필요가 나타났습니다 패턴 - 이후 TrackPoint
및 Tracking
개체를 전달합니다. 이걸 어떻게 개선할까요?
NsaTracking? -) – ligi