2013-04-14 6 views
0

나는 안드로이드에 대해 매우 익숙하며 책을 읽고 많은 "자습서"를 읽은 후 첫 번째 "실제"앱을 만들려고합니다.안드로이드와 중재자 디자인 패턴

제 질문은 간단합니다. 안드로이드 앱을 디자인 할 때 중재자 디자인 패턴이 여전히 좋은 선택입니까?

그렇다면 디자인 패턴을 안드로이드 앱을 프로그래밍 할 때 피해야합니까?

다른 개체의 인스턴스 모음을 사용하는 데 사용할 수있는 조정자 패턴에 아무런 위도가 없다면?

+0

메디 에이터를 어떻게 사용 하시겠습니까? 아마도 싱글 톤을 피하려고합니다. –

+0

@ MaciejGórski 예를 들어, 내 모든 활동에 대해 알아야 할 사용자 개체가 있습니다. 그리고 왜 싱글 톤을 피하기를 원합니까? –

답변

2

모델 클래스 (MyModel)를 만들고 Application.onCreate (Activity.onCreate이 아님)에이 클래스의 개체를 생성하는 것이 좋습니다.

MyApplication app = (MyApplication) getApplication(); 
MyModel model = app.getMyModel(); 
User user = model.getCurrentUser(); 

는 또한 생성 BaseActivity 클래스를 사용하면 방법을 만들 경우 당신이 입력 저장할 수 있습니다 그것에 대해 그 추가 게터 후

은, 그래서 당신은이 같은 모든 Activity 또는 Service에서이 모델을 얻을 수 있습니다 protected MyModel getModel() 위의 코드의 처음 2 행에서 모델을 반환합니다.

편집 :

당신은 Application를 확장하는 클래스를 만들고 AndroidManifest.xml에서이 클래스를 등록해야합니다. (싱글에 대한) https://stackoverflow.com/a/2929927/2183804

편집 :

(뿐만 아니라 안드로이드에) 안티 패턴이라고합니다

이는 방법이다. Android에서는 MySingleton.getInstance (Context)와 같은 접근자를 사용하여 싱글 톤으로 끝나는 사람들을 보았습니다. 어쨌든 Context가 필요하기 때문에. SharedPrefs 또는 DB 액세스 용. 이것은 응용 프로그램을위한 것이므로 잘못된 방식으로 사용될 수있는 추가 해킹 엔티티를 만들 필요가 없습니다. 사용할 수있는 컨텍스트가없는 곳의 MySingleton.getInstance (null). 프로세스가 종료되고 다시 시작된 후 NPE가 발생할 수 있습니다.

+0

Application.onCreate()에서 어떻게 만들 수 있습니까? 나는 이것을 어디에서 발견 할 수 있는가? 그리고 당신이 싱글 톤을 제안하지 않는 이유는 무엇입니까? –

+0

응용 프로그램은 또 다른 구성 요소입니다. 하나의 인스턴스 만 존재하지만 싱글 톤이 아닙니다 (정적 접근자가 없습니다). 내 편집을 참조하십시오. –

+0

고맙습니다. 또는 대답이 매우 도움이 되었기 때문에 어떤 이유에서든 싱글 톤을 피하고 싶은 이유를 설명해 주시겠습니까? –