일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 안드로이드 sunflower
- 막내의막무가내 코틀린 안드로이드
- 프래그먼트
- 2022년 6월 일상
- 막내의막무가내 코틀린
- 막내의막무가내 안드로이드 코틀린
- 막무가내
- 안드로이드
- 안드로이드 Sunflower 스터디
- 막내의막무가내 안드로이드 에러 해결
- 부스트코스
- 막내의막무가내 SQL
- 막내의막무가내 프로그래밍
- 주엽역 생활맥주
- 막내의막무가내 목표 및 회고
- 부스트코스에이스
- 막내의 막무가내
- 막내의막무가내 코볼 COBOL
- 막내의막무가내
- Fragment
- 막내의막무가내 일상
- 막내의막무가내 rxjava
- 주택가 잠실새내
- 막내의막무가내 안드로이드
- 막내의막무가내 알고리즘
- 프로그래머스 알고리즘
- 막내의 막무가내 알고리즘
- 막내의막무가내 플러터
- 막내의막무가내 플러터 flutter
- flutter network call
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[디자인패턴] 스타터 패턴 ( Android Starter Pattern ) 본문
부스트코스 에이스를 진행하면서 Intent로 값을 전달해주고 화면전환을 하는 코드에서 위와 같이 코드리뷰를 받았다.
그래서 스타터 패턴에 대해서 찾아봤다.
https://riptutorial.com/android/example/5357/starter-pattern
https://hackernoon.com/object-oriented-tricks-4-starter-pattern-android-edition-1844e1a8522d
간단히 설명하자면 이 패턴의 장점은 코드의 가독성을 높이는 동시에 코드 복잡성, 유지 관리 비용 및 구성 요소 연결을 줄이는 것이다. 즉 가독성과 실수 유지비용 측면에서 좋다고 볼 수 있다.
(위 두 사이트를 보면 하는방법에 대해 조금이나마 익힐 수 있다...)
//스타터패턴
public static void start(Context context) {
Intent starter = new Intent(context, MovieInfoActivity.class);
starter.putExtra();
context.startActivity(starter);
}
먼저 자바에서 라이브템플릿을 제공하는데 starter이라고 치면 위와 같이 자동완성 된다.
안드로이드 스타터패턴에 대해 구글링을 해봤는데 위 두개 사이트와 몇개의 글밖에 보이지 않았고 어떻게 사용하는지 넓게 설명하거나 예제가 있는글을 찾지 못했다. 그냥 단순하게 putExtra하고 startActivity하는거 밖에 없었다... startActivirtForResult나 화면전환하는 인텐트가 여러개인 경우 어떻게 분기문으로 처리할것인지 등 기타사항들은 못찾았다. (찾으시면 댓글로 사이트링크좀 부탁드립니다.)
그래서 이게 맞게하는건지는 아직 확실하진 않지만
위에 올려진 두 사이트에서 예제를 참고로 내 프로젝트에도 적용해보았다.
1. 먼저 startActivity일 때이다. 난 List를 전달할꺼니깐 보통 예제와 다르게 String이 아니라 List를 매개변수로 선언했다.
final static String COMMENT_LIST_EXTRA = "COMMENT_LIST_EXTRA";
//스타터패턴
public static void start(Context context, ArrayList<Comment> commentList ) {
Intent starter = new Intent(context, CommentTotalActivity.class);
starter.putExtra(COMMENT_LIST_EXTRA, commentList);
context.startActivity(starter);
}
starter를 호출할 때
start(this, mCommentList);
2. startActivityForResult일 때이다.
final static int TOTAL_REQUEST = 12;
//스타터패턴
public static void start(Activity context, ArrayList<Comment> commentList ) {
Intent starter = new Intent(context, CommentTotalActivity.class);
starter.putExtra(COMMENT_LIST_EXTRA, commentList);
context.startActivityForResult(starter, TOTAL_REQUEST);
}
start(this, mCommentList);
받는건 다음과 같이 일반적인 인텐트 받듯이 받는 것 같다.
Intent intent = getIntent();
if(!intent.getExtras().containsKey(COMMENT_LIST_EXTRA)){
throw new UnsupportedOperationException("Activity should be started using the static start method");
}
String data = intent.getStringExtra(COMMENT_LIST_EXTRA);
써보긴 했는데 아직 손에 익지는 않고 확실한 예제가 없어서 기본적인 한개의 인텐트를 실행하는게 아니면 써도 되는건진 잘 모르겠다. (패턴인데 내 멋대로쓰면 안쓰는것보다 못해서..)
댓글과 공감은 큰 힘이됩니다. ! 감사합니다.
'디자인패턴' 카테고리의 다른 글
[디자인패턴] Design Pattern 요약 및 참고 모음 (0) | 2020.05.26 |
---|