[next] andorid에 mvc 패턴 적용하기
TRANSCRIPT
![Page 1: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/1.jpg)
Day����������� ������������������ 9.����������� ������������������ ����������� ������������������
안드로이드����������� ������������������ MVC����������� ������������������ 패턴����������� ������������������ 적용하기
![Page 2: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/2.jpg)
이번����������� ������������������ Section에서는����������� ������������������ HomeView가����������� ������������������ 갖고있는����������� ������������������ 기능들을����������� ������������������ 분리함으로써����������� ������������������
MVC����������� ������������������ Pattern을����������� ������������������ 적용해����������� ������������������ 보겠습니다.
![Page 3: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/3.jpg)
MVC����������� ������������������ Pattern
모델-뷰-컨트롤러(Model–View–Controller,����������� ������������������ MVC)는����������� ������������������ 소프트웨어����������� ������������������ 공학에서����������� ������������������ 사용되는����������� ������������������ 아키텍처����������� ������������������ 패턴이다.����������� ������������������ ����������� ������������������
이����������� ������������������ 패턴을����������� ������������������ 성공적으로����������� ������������������ 사용하면,����������� ������������������ 사용자����������� ������������������ 인터페이스로부터����������� ������������������ 비즈니스����������� ������������������ 로직을����������� ������������������ 분리하여����������� ������������������ 애플리케이션의����������� ������������������ 시각적����������� ������������������ 요
소나����������� ������������������ 그����������� ������������������ 이면에서����������� ������������������ 실행되는����������� ������������������ 비즈니스����������� ������������������ 로직을����������� ������������������ 서로����������� ������������������ 영향����������� ������������������ 없이����������� ������������������ 쉽게����������� ������������������ 고칠����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 애플리케이션을����������� ������������������ 만들����������� ������������������ 수����������� ������������������ 있다.����������� ������������������ MVC
에서����������� ������������������ 모델은����������� ������������������ 애플리케이션의����������� ������������������ 정보(데이터)를����������� ������������������ 나타내며,����������� ������������������ 뷰는����������� ������������������ 텍스트,����������� ������������������ 체크박스����������� ������������������ 항목����������� ������������������ 등과����������� ������������������ 같은����������� ������������������ 사용자����������� ������������������ 인터페이스����������� ������������������
요소를����������� ������������������ 나타내고,����������� ������������������ 컨트롤러는����������� ������������������ 데이터와����������� ������������������ 비즈니스����������� ������������������ 로직����������� ������������������ 사이의����������� ������������������ 상호동작을����������� ������������������ 관리한다.
http://ko.wikipedia.org/wiki/모델-뷰-컨트롤러
![Page 4: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/4.jpg)
MVC����������� ������������������ Pattern
• 사용자����������� ������������������ 인터페이스로부터����������� ������������������ 비즈니스����������� ������������������ 로직을����������� ������������������ 분리����������� ������������������
• 서로����������� ������������������ 영향����������� ������������������ 없이����������� ������������������ 쉽게����������� ������������������ 고칠����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 애플리케이션����������� ������������������
• 모델은����������� ������������������ 애플리케이션의����������� ������������������ 정보(데이터)����������� ������������������
• 뷰는����������� ������������������ 사용자����������� ������������������ 인터페이스����������� ������������������ 요소����������� ������������������
• 컨트롤러는����������� ������������������ 데이터와����������� ������������������ 비즈니스����������� ������������������ 로직����������� ������������������ 사이의����������� ������������������ 상호동작을����������� ������������������ 관리
![Page 5: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/5.jpg)
NEXTGRAM에����������� ������������������ 적용을����������� ������������������ 해보면서����������� ������������������ ����������� ������������������ 좀����������� ������������������ 더����������� ������������������ 자세히����������� ������������������ 알아봅시다.
![Page 6: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/6.jpg)
NEXTGRAM에는����������� ������������������ 다양한����������� ������������������ View가����������� ������������������ 있지만����������� ������������������ 그����������� ������������������ 중에서도����������� ������������������
HomeView.java를����������� ������������������ 수정해보겠습니다.
![Page 7: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/7.jpg)
HomeView.java가����������� ������������������ 하는일을����������� ������������������ 살펴보니
![Page 8: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/8.jpg)
…⋯
HomeView.java가����������� ������������������ 하는일을����������� ������������������ 살펴보니
![Page 9: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/9.jpg)
HomeView.java가����������� ������������������ 하는일을����������� ������������������ 살펴보니
onCreate에서����������� ������������������
SharedPreferences를����������� ������������������ 사용����������� ������������������ ����������� ������������������
mainListView����������� ������������������ 인플레이트
Proxy����������� ������������������ 인스턴스화
Dao����������� ������������������ 인스턴스화
SyncDataService����������� ������������������ 실행
listViewSimple1����������� ������������������ 실행
onResume에서����������� ������������������
refreshData()����������� ������������������ 실행
![Page 10: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/10.jpg)
HomeView.java가����������� ������������������ 하는일을����������� ������������������ 살펴보니
SharedPreferences를����������� ������������������ 사용����������� ������������������ ����������� ������������������
mainListView����������� ������������������ 인플레이트
Proxy����������� ������������������ 인스턴스화
Dao����������� ������������������ 인스턴스화
SyncDataService����������� ������������������ 실행
listViewSimple1����������� ������������������ 실행
refreshData()����������� ������������������ 실행
![Page 11: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/11.jpg)
HomeView.java가����������� ������������������ 하는일을����������� ������������������ 살펴보니
SharedPreferences를����������� ������������������ 사용����������� ������������������ ����������� ������������������ mainListView����������� ������������������ 인플레이트
Proxy����������� ������������������ 인스턴스화
Dao����������� ������������������ 인스턴스화
SyncDataService����������� ������������������ 실행
listViewSimple1����������� ������������������ 실행refreshData()����������� ������������������ 실행
Controller가����������� ������������������ 할일 View가����������� ������������������ 할일
![Page 12: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/12.jpg)
SharedPreferences를����������� ������������������ 사용����������� ������������������ ����������� ������������������ mainListView����������� ������������������ 인플레이트
Proxy����������� ������������������ 인스턴스화
Dao����������� ������������������ 인스턴스화
SyncDataService����������� ������������������ 실행
listViewSimple1����������� ������������������ 실행refreshData()����������� ������������������ 실행
Controller가����������� ������������������ 할일 View가����������� ������������������ 할일
View가����������� ������������������ 할일은����������� ������������������ HomeView.java에����������� ������������������ 그대로����������� ������������������ 두고����������� ������������������ HomeController.java를����������� ������������������ 생성해����������� ������������������ 만들어����������� ������������������ 봅시다.
![Page 13: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/13.jpg)
HomeController.java����������� ������������������ 작성하기 SharedPreferences를����������� ������������������ 사용����������� ������������������ ����������� ������������������
Proxy����������� ������������������ 인스턴스화
Dao����������� ������������������ 인스턴스화
SyncDataService����������� ������������������ 실행
refreshData()
![Page 14: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/14.jpg)
HomeController����������� ������������������ 작성하기
HomeController.java를����������� ������������������ 생성한����������� ������������������ 후����������� ������������������ Context를����������� ������������������ 담아����������� ������������������ 둘����������� ������������������ 수����������� ������������������ 있게����������� ������������������
생성자를����������� ������������������ 작성합니다.
HomeController.java
![Page 15: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/15.jpg)
HomeController.java����������� ������������������ 작성하기 SharedPreferences를����������� ������������������ 사용����������� ������������������ ����������� ������������������
Proxy����������� ������������������ 인스턴스화
Dao����������� ������������������ 인스턴스화
SyncDataService����������� ������������������ 실행
refreshData()
![Page 16: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/16.jpg)
HomeController.java에����������� ������������������ initSharedPreferences()����������� ������������������ 메서드를����������� ������������������ 생성합니다.
HomeController.java
HomeController����������� ������������������ 작성하기
![Page 17: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/17.jpg)
HomeController����������� ������������������ 작성하기
HomeView.java
다음����������� ������������������ HomView.java에서����������� ������������������ SharedPreferences와����������� ������������������ ����������� ������������������
관련있던����������� ������������������ 부분을����������� ������������������ 모두����������� ������������������ 복사한후
![Page 18: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/18.jpg)
HomeController����������� ������������������ 작성하기
HomeController.java
HomeController의����������� ������������������ initSharedPreferences()����������� ������������������ 안에����������� ������������������ 붙여넣습니다.
![Page 19: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/19.jpg)
HomeController����������� ������������������ 작성하기
HomeController.java
Application����������� ������������������ Context의����������� ������������������ 함수들은����������� ������������������ context가����������� ������������������ 호출하도록����������� ������������������ 추가����������� ������������������ 작성합니다.
![Page 20: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/20.jpg)
HomeController����������� ������������������ 작성하기
HomeView.java에����������� ������������������ HomeController의����������� ������������������ 인스턴스를����������� ������������������ 생성한����������� ������������������ 후����������� ������������������
initSharedPreferences()메서드를����������� ������������������ 실행하도록����������� ������������������ 합니다.
HomeView.java
![Page 21: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/21.jpg)
HomeController.java����������� ������������������ 작성하기
SharedPreferences를����������� ������������������ 사용����������� ������������������ ����������� ������������������
Proxy����������� ������������������ 인스턴스화
Dao����������� ������������������ 인스턴스화
SyncDataService����������� ������������������ 실행
refreshData()
![Page 22: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/22.jpg)
HomeController����������� ������������������ 작성하기
HomeView.java의����������� ������������������ refreshData()����������� ������������������ 함수를����������� ������������������ 복사한����������� ������������������ 후����������� ������������������
외부에서����������� ������������������ 사용할����������� ������������������ 수����������� ������������������ 있게����������� ������������������ private를����������� ������������������ public으로����������� ������������������ 변경합니다.
HomeView.java
![Page 23: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/23.jpg)
HomeController����������� ������������������ 작성하기
HomeController.java
HomeController.java에����������� ������������������ 붙여넣습니다.����������� ������������������
Proxy와����������� ������������������ Dao가����������� ������������������ 없으니!
![Page 24: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/24.jpg)
HomeController.java����������� ������������������ 작성하기
SharedPreferences를����������� ������������������ 사용����������� ������������������ ����������� ������������������
Proxy����������� ������������������ 인스턴스화
Dao����������� ������������������ 인스턴스화
SyncDataService����������� ������������������ 실행
refreshData()
![Page 25: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/25.jpg)
HomeController����������� ������������������ 작성하기
HomeController.java
Proxy와����������� ������������������ ProviderDao����������� ������������������ 객체를����������� ������������������ 선언하고����������� ������������������ 생성합니다.
![Page 26: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/26.jpg)
HomeController����������� ������������������ 작성하기
HomeView.java
����������� ������������������ onResume과����������� ������������������ onOptionItemSelected에서����������� ������������������ refreshData()를����������� ������������������ ����������� ������������������
homeController로부터����������� ������������������ 호출하도록����������� ������������������ 합니다.
![Page 27: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/27.jpg)
HomeController.java����������� ������������������ 작성하기
SharedPreferences를����������� ������������������ 사용����������� ������������������ ����������� ������������������
Proxy����������� ������������������ 인스턴스화
Dao����������� ������������������ 인스턴스화
SyncDataService����������� ������������������ 실행
refreshData()
![Page 28: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/28.jpg)
HomeController����������� ������������������ 작성하기
HomeView.java
HomeView.java로����������� ������������������ 부터����������� ������������������ Service를����������� ������������������ 실행하기����������� ������������������ 위한����������� ������������������ 코드를����������� ������������������ ����������� ������������������
복사한����������� ������������������ 후에
![Page 29: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/29.jpg)
HomeController����������� ������������������ 작성하기
HomeController.java
HomeController.java에����������� ������������������ startSyncDataService()����������� ������������������ 메서드를����������� ������������������ 작성한����������� ������������������ 후
![Page 30: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/30.jpg)
HomeController����������� ������������������ 작성하기
HomeController.java
붙여넣기를����������� ������������������ 합니다.����������� ������������������
이때����������� ������������������ startService()는����������� ������������������ Context의����������� ������������������ 함수이니����������� ������������������ context가����������� ������������������ 호출하도록����������� ������������������ 합니다.
![Page 31: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/31.jpg)
HomeController����������� ������������������ 작성하기
HomeView.java
마지막으로����������� ������������������ HomeView.java의����������� ������������������ onCreate에서����������� ������������������ ����������� ������������������
homeController.startSyncDataService()를����������� ������������������ 실행하도록����������� ������������������ 합니다.
![Page 32: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/32.jpg)
이전보다는����������� ������������������ 깔끔해����������� ������������������ 졌지만����������� ������������������ 한줄기가����������� ������������������ 한줄기가����������� ������������������ 남아있네요.
더����������� ������������������ 고민해보기
![Page 33: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/33.jpg)
listViewSimple1에게����������� ������������������ ArrayList<ArticleDTO>는����������� ������������������ ����������� ������������������
어떻게����������� ������������������ 전달해����������� ������������������ 줄지����������� ������������������ 고민하도록����������� ������������������ 합시다.
HomeView.java����������� ������������������ -����������� ������������������ onCreate
listViewSimple1����������� ������������������ 실행
더����������� ������������������ 고민해보기
![Page 34: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/34.jpg)
After
Before
![Page 35: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/35.jpg)
마무리
MVC를����������� ������������������ 적용해보자구조를����������� ������������������ 더����������� ������������������ 매끄럽게����������� ������������������ 만들기����������� ������������������
section����������� ������������������ 4
![Page 36: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/36.jpg)
����������� ������������������ HomeView.java의����������� ������������������ 기능
SharedPreferences를����������� ������������������ 사용����������� ������������������ ����������� ������������������
mainListView����������� ������������������ 인플레이트
Proxy����������� ������������������ 인스턴스화
Dao����������� ������������������ 인스턴스화
SyncDataService����������� ������������������ 실행
listViewSimple1����������� ������������������ 실행
refreshData()����������� ������������������ 실행
![Page 37: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/37.jpg)
����������� ������������������ HomeView.java
Controller와����������� ������������������ View의����������� ������������������ 기능을����������� ������������������ 모두����������� ������������������ 하는����������� ������������������ ����������� ������������������
HomeView를
![Page 38: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/38.jpg)
우리는����������� ������������������ Controller와����������� ������������������ View의����������� ������������������ 기능을����������� ������������������ 가지고����������� ������������������ 있던����������� ������������������ HomeView.java를����������� ������������������
하는일을����������� ������������������ 나누어����������� ������������������ 본����������� ������������������ 후����������� ������������������ HomeController와����������� ������������������ HomeView로����������� ������������������ 분리하였습니다.
SharedPreferences를����������� ������������������ 사용����������� ������������������ ����������� ������������������ mainListView����������� ������������������ 인플레이트
Proxy����������� ������������������ 인스턴스화
Dao����������� ������������������ 인스턴스화
SyncDataService����������� ������������������ 실행
listViewSimple1����������� ������������������ 실행refreshData()����������� ������������������ 실행
HomeController.java ����������� ������������������ HomeView.java
![Page 39: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/39.jpg)
����������� ������������������ HomeView.java
HomeController.java
![Page 40: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/40.jpg)
• 사용자����������� ������������������ 인터페이스로부터����������� ������������������ 비즈니스����������� ������������������ 로직을����������� ������������������ 분리����������� ������������������
• 서로����������� ������������������ 영향����������� ������������������ 없이����������� ������������������ 쉽게����������� ������������������ 고칠����������� ������������������ 수����������� ������������������ 있는����������� ������������������ 애플리케이션
이를����������� ������������������ 통해����������� ������������������ MVC����������� ������������������ Pattern의����������� ������������������ 효과인
를����������� ������������������ 달성하기����������� ������������������ 위해����������� ������������������ 한걸음����������� ������������������ 더����������� ������������������ 나아갔습니다.
![Page 41: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/41.jpg)
MVC����������� ������������������ Pattern����������� ������������������ 외에도����������� ������������������ Android에는����������� ������������������
MVP����������� ������������������ Pattern이����������� ������������������ 적합하다는����������� ������������������ 의견도����������� ������������������ 있으니����������� ������������������ ����������� ������������������
함께����������� ������������������ 학습해����������� ������������������ 보기를����������� ������������������ 권장합니다.
![Page 42: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/42.jpg)
section����������� ������������������ 5
DTO를����������� ������������������ 활용해보자객체를����������� ������������������ 통해����������� ������������������ 데이터를����������� ������������������ 전달하기
더
![Page 43: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/43.jpg)
현재����������� ������������������ Article들을����������� ������������������ 받아오는����������� ������������������ 로직을����������� ������������������ 살펴본����������� ������������������ 후����������� ������������������ 그에����������� ������������������ 따른����������� ������������������ 문제점을����������� ������������������ 확인해����������� ������������������ 보겠습니다
![Page 44: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/44.jpg)
현재����������� ������������������ Article들을����������� ������������������ 받아오는����������� ������������������ 로직
ProxyProviderDao
ProviderDao,����������� ������������������ Proxy,����������� ������������������ Server와
![Page 45: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/45.jpg)
현재����������� ������������������ Article들을����������� ������������������ 받아오는����������� ������������������ 로직
ProxyProviderDao
JSONJSON
ProviderDao,����������� ������������������ Proxy,����������� ������������������ Server와����������� ������������������
그����������� ������������������ 사이에서����������� ������������������ 전달되는����������� ������������������ 데이터의����������� ������������������ 형태
![Page 46: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/46.jpg)
현재����������� ������������������ Article들을����������� ������������������ 받아오는����������� ������������������ 로직
ProxyProviderDao
ProviderDao,����������� ������������������ Proxy,����������� ������������������ Server와����������� ������������������
그����������� ������������������ 사이에서����������� ������������������ 전달되는����������� ������������������ 데이터의����������� ������������������ 형태����������� ������������������
에����������� ������������������ 관한����������� ������������������ 이야기����������� ������������������ 입니다.
JSONJSON
![Page 47: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/47.jpg)
현재����������� ������������������ Article들을����������� ������������������ 받아오는����������� ������������������ 로직
ProxyProviderDao
현재는����������� ������������������ 서버에서����������� ������������������ JSON으로����������� ������������������ 데이터를����������� ������������������ 전달해줍니다.
JSONJSON
![Page 48: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/48.jpg)
현재����������� ������������������ Article들을����������� ������������������ 받아오는����������� ������������������ 로직
ProxyProviderDao
Proxy는����������� ������������������ getJSON()메서드를����������� ������������������ 통해����������� ������������������ ����������� ������������������
데이터를����������� ������������������ 서버에����������� ������������������ 요청하구요
JSONJSON
![Page 49: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/49.jpg)
현재����������� ������������������ Article들을����������� ������������������ 받아오는����������� ������������������ 로직
ProxyProviderDao
ProviderDao는����������� ������������������ JSON����������� ������������������ 데이터를����������� ������������������ 받아����������� ������������������
insertJsonData()����������� ������������������ 함수를����������� ������������������ 통해����������� ������������������ DB에����������� ������������������ 저장합니다.
JSONJSON
![Page 50: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/50.jpg)
현재����������� ������������������ Article들을����������� ������������������ 받아오는����������� ������������������ 로직
ProxyProviderDao
JSONJSON
만약����������� ������������������ 서버가����������� ������������������ XML
![Page 51: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/51.jpg)
현재����������� ������������������ Article들을����������� ������������������ 받아오는����������� ������������������ 로직
ProxyProviderDao
XMLXML
Proxy에서는����������� ������������������ getXML()을����������� ������������������ 만들고����������� ������������������
ProviderDao는����������� ������������������ insertXMLData()����������� ������������������ 을����������� ������������������ 추가해야����������� ������������������ 합니다
![Page 52: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/52.jpg)
현재����������� ������������������ Article들을����������� ������������������ 받아오는����������� ������������������ 로직
ProxyProviderDao
XMLArticleDTO
Proxy����������� ������������������ 가����������� ������������������ xml,����������� ������������������ json,����������� ������������������ 또다른����������� ������������������ 형태의����������� ������������������ 데이터라도����������� ������������������ ����������� ������������������
ArticleDTO를����������� ������������������ ProviderDao에게����������� ������������������ 전달하는����������� ������������������ 것이����������� ������������������ 낫지����������� ������������������ 않을까?
JSON
![Page 53: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/53.jpg)
구조를����������� ������������������ 변경해보자!(두둥)
![Page 54: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/54.jpg)
Proxy.java����������� ������������������ 수정하기
![Page 55: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/55.jpg)
Proxy.java����������� ������������������ 수정하기
Proxy.java
Proxy.java에����������� ������������������ getArticleDTO()라는����������� ������������������ 메서드를����������� ������������������ 만들고����������� ������������������
ArrayList<ArticleDTO>를����������� ������������������ 반환하도록����������� ������������������ 합니다.
![Page 56: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/56.jpg)
Proxy.java����������� ������������������ 수정하기
Proxy.java
jsonData로부터����������� ������������������ DTO를����������� ������������������ 만들기����������� ������������������ 위한����������� ������������������ 멤버변수들을����������� ������������������ 선언.
![Page 57: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/57.jpg)
Proxy.java����������� ������������������ 수정하기
Proxy.java
jsonData와����������� ������������������ ArrayList에����������� ������������������ 담을����������� ������������������ ArticleDTO도����������� ������������������ 준비해줍니다.
![Page 58: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/58.jpg)
Proxy.java����������� ������������������ 수정하기
Proxy.java
다음����������� ������������������ 슬라이드는����������� ������������������ 위의����������� ������������������ 부분을����������� ������������������ 작성할����������� ������������������ 것입니다.
![Page 59: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/59.jpg)
Proxy.java����������� ������������������ 수정하기
Proxy.java
jsonData를����������� ������������������ JSONArray로����������� ������������������ 객체화����������� ������������������ 시킵니다.
![Page 60: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/60.jpg)
Proxy.java����������� ������������������ 수정하기
Proxy.java
JSONArray객체에����������� ������������������ 접근하기����������� ������������������ 위한����������� ������������������ 반복문을����������� ������������������ 작성
![Page 61: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/61.jpg)
Proxy.java����������� ������������������ 수정하기
Proxy.java
articleDTO를����������� ������������������ 만들어����������� ������������������ 줍니다.
![Page 62: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/62.jpg)
Proxy.java����������� ������������������ 수정하기
Proxy.java
생성한����������� ������������������ articleDTO를����������� ������������������ articleList에����������� ������������������ 추가!
![Page 63: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/63.jpg)
ProviderDao.java����������� ������������������ 수정하기
![Page 64: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/64.jpg)
ProviderDao.java����������� ������������������ 수정하기
ProviderDao.java
ProviderDao.java에����������� ������������������ insertData()����������� ������������������ 메서드를����������� ������������������ 작성하고����������� ������������������ ����������� ������������������
필요한����������� ������������������ 변수들을����������� ������������������ 작성합니다.
많은����������� ������������������ 코드가����������� ������������������ insertJsonData와����������� ������������������ 겹치니����������� ������������������ 코드를����������� ������������������ 복사하시고����������� ������������������ ����������� ������������������
수정하시는����������� ������������������ 것을����������� ������������������ 권장합니다.
![Page 65: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/65.jpg)
ProviderDao.java����������� ������������������ 수정하기
ProviderDao.java
articleList를����������� ������������������ 순회하는����������� ������������������ 반복문들����������� ������������������ 작성합니다.
![Page 66: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/66.jpg)
ProviderDao.java����������� ������������������ 수정하기
ProviderDao.java
ArticleDTO에����������� ������������������ 있는����������� ������������������ 값을����������� ������������������ 추출해����������� ������������������ 변수에����������� ������������������ 넣습니다.
![Page 67: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/67.jpg)
ProviderDao.java����������� ������������������ 수정하기
ProviderDao.java
마지막으로����������� ������������������ 받아온����������� ������������������ articleNumber도����������� ������������������ 저장하는����������� ������������������ 것을����������� ������������������ 잊지����������� ������������������ 않습니다.
다시한번����������� ������������������ 말씀드리지만����������� ������������������ 많은����������� ������������������ 코드가����������� ������������������ insertJsonData와����������� ������������������ 겹치니����������� ������������������ 코드를����������� ������������������ 복사하시고����������� ������������������ ����������� ������������������
수정하시는����������� ������������������ 것을����������� ������������������ 권장합니다.
![Page 68: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/68.jpg)
ProviderDao.java����������� ������������������ 수정하기
ProviderDao.java
다음����������� ������������������ 슬라이드에����������� ������������������ 나오는����������� ������������������ 코드����������� ������������������ 위치
![Page 69: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/69.jpg)
ProviderDao.java����������� ������������������ 수정하기
ProviderDao.java
DB에����������� ������������������ 넣기����������� ������������������ 위한����������� ������������������ 코드들도����������� ������������������ 추가합니다.
이부분의����������� ������������������ 코드는����������� ������������������ insertJsonData와����������� ������������������ 동일하니����������� ������������������ 꼭����������� ������������������ 복사하시길����������� ������������������ 권장합니다.
![Page 70: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/70.jpg)
HomeController.java����������� ������������������ 수정하기
![Page 71: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/71.jpg)
HomeController.java����������� ������������������ 수정하기
HomeController.java의����������� ������������������ refreshData안의����������� ������������������ 코드를����������� ������������������
수정해����������� ������������������ 줍시다.
HomeController.java
![Page 72: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/72.jpg)
SyncDataService.java����������� ������������������ 수정하기
![Page 73: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/73.jpg)
SyncDataService.java����������� ������������������ 수정하기
SyncDataService.java
SyncDataService.java의����������� ������������������ onStartCommand안의����������� ������������������ 코드를����������� ������������������
수정해����������� ������������������ 줍시다.
![Page 74: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/74.jpg)
마무리
DTO를����������� ������������������ 활용해보자객체를����������� ������������������ 통해����������� ������������������ 데이터를����������� ������������������ 전달하기
더section����������� ������������������ 5
![Page 75: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/75.jpg)
After
Before
![Page 76: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/76.jpg)
ProxyProviderDao
JSONJSON
이렇게����������� ������������������ 구성되었던����������� ������������������ 기존의����������� ������������������ 로직을
![Page 77: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/77.jpg)
ProxyProviderDao
ArticleDTO JSON
ProviderDao의
를����������� ������������������
변경하고.����������� ������������������
![Page 78: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/78.jpg)
ProxyProviderDao
ArticleDTO JSON
Proxy의����������� ������������������ 기능들을����������� ������������������
![Page 79: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/79.jpg)
ProxyProviderDao
ArticleDTO JSON
Proxy의����������� ������������������ 기능����������� ������������������
getJson����������� ������������������ :����������� ������������������ 서버에서����������� ������������������ jsonData를����������� ������������������ 가져온다.����������� ������������������
![Page 80: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/80.jpg)
ProxyProviderDao
ArticleDTO JSON
Proxy의����������� ������������������ 기능����������� ������������������
getArticleDTO����������� ������������������ :����������� ������������������ ArrayList<articleDTO>����������� ������������������ 데이터를����������� ������������������ 가져온다
![Page 81: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/81.jpg)
ProxyProviderDao
ArticleDTO JSON
이렇게����������� ������������������ 수정함으로써
![Page 82: [NEXT] Andorid에 MVC 패턴 적용하기](https://reader036.vdocuments.pub/reader036/viewer/2022062300/55a25c191a28ab962b8b46a5/html5/thumbnails/82.jpg)
우리는����������� ������������������ 서버의����������� ������������������ API가����������� ������������������ 변경되더라도����������� ������������������
유지보수하기����������� ������������������ 용이한����������� ������������������ 방향으로����������� ������������������ DTO객체를����������� ������������������ 활용했습니다.
ProxyProviderDao
XMLArticleDTO
JSON