안드로이드 디자인 패턴과 활용 사례

고객평점
저자카일 뮤
출판사항에이콘, 발행일:2017/10/20
형태사항p.442 B5판:24
매장위치컴퓨터부(B2) , 재고문의 : 051-816-9500
ISBN9791161750620 [소득공제]
판매가격 30,000원  
포인트 900점
배송비결제주문시 결제
  • 주문수량 

총 금액 : 0원

책 소개

디자인 패턴을 살펴보고, 안드로이드 API가 사용하는 디자인 패턴의 실제 사례를 중심으로 개별 패턴을 이해하기 쉽게 설명한다. 가상 서비스를 개발하면서 마주하는 문제에 대한 해결책으로 패턴을 배울 수 있다. 개별 디자인 패턴은 구체적인 예제와 함께 학습해서 개별 패턴을 쉽게 이해하고 사용할 수 있게 도와준다. 따라서 안드로이드 앱을 개발하는 개발자 대부분에게 도움이 될 것이다.

 

이 책에서 다루는 내용

- 간단한 앱 제작 후 실 기기와 에뮬레이터에서의 실행
- 안드로이드 스튜디오가 제공하는 머터리얼 디자인에 대한 위지익(WYSIWYG)과 XML 접근 방식
- 터치스크린 리스너, 제스처 감지, 센서를 읽어 사용자 액션 감지
- 트랜지션과 공유 요소를 적용한 멋진 애니메이션 사용과 모바일 기기에서의 작은 화면을 효율적으로 사용하는 방법
- 특정 디렉터리를 사용해 앱에 다양한 기기에 어울리는 레이아웃 적용
- 소셜 미디어에 연결한 앱을 디지털 단어로 소셜화
- 앱컴팩(AppCompat) 지원 라이브러리를 사용한 많은 기기에서의 사용 방법


이 책의 대상 독자
기본적으로 안드로이드 개발 경험이 있는 개발자가 대상이다. 이 책을 최대한 활용하려면 기본적인 자바 프로그래밍 지식이 필요하다.


이 책의 구성

1장, 디자인 패턴(Design Pattern): 개발 환경 소개하고, 널리 사용하는 두 개의 패턴인 팩토리(factory)와 추상 팩토리(abstract factory)를 소개한다.
2장, 생성 패턴(Creational Pattern): 머티리얼(material)과 인터페이스 디자인을 다루고, 디자인 지원 라이브러리와 빌더 디자인 패턴을 살펴본다.
3장, 머티리얼 패턴(Material Pattern): 안드로이드 사용자 인터페이스, 그리고 앱 바와 슬라이딩 내비게이션 드로어(sliding navigation drawer) 같은 가장 중요한 머티리얼 디자인 컴포넌트를 일부 소개한다. 메뉴, 액션 아이콘, 그리고 메뉴와 액션 아이콘을 구현하는 방법과 드로어 리스너를 사용해서 사용자 액티비티를 감지하는 방법을 소개한다.
4장, 레이아웃 패턴(Layout Pattern): 이전 레이아웃에서부터 시작해서 안드로이드 레이아웃 디자인 패턴과 다양한 기기에서 동작하는 레이아웃을 만들기 위해 그래비티(gravity)와 웨이트(weight)를 사용하는 방법에 대해서 자세히 설명한다. 그래비티와 웨이트를 사용해서 안드로이드 기기 회전, 화면 크기와 모양의 차이를 다루는 방법에 대해서 알아보고 전략 패턴을 소개, 시연한다.
5장, 구조 패턴(Structural Pattern): 디자인 라이브러리에 대해 더 자세히 살펴보고, 리사이클러 뷰(recycler view)와 더불어 코디네이터 레이아웃이 관리하는 레이아웃을 만드는 방법을 살펴본다. 이 과정에서 어댑터 디자인 패턴을 분석해야 한다. 먼저 내부 버전을 작성한 다음 브리지 패턴(bridge pattern), 파사드(facade) 및 필터 패턴(filter patterns)은 물론 고유의 어댑터 디자인 패턴을 구축한다.
6장, 패턴 활성화(Activating Pattern): 앱에서 디자인 패턴을 직접 적용하는 방법을 보여준다. 콜랩 스 툴바(collapsing toolbar), 스크롤과 구분선(divider) 같은 디자인 라이브러리 기능을 더 많이 다룬다. 사용자 액티비티에 의해 트리거되는 사용자 정의 대화 상자를 생성한다. 팩토리 패턴을 다시 살펴보고, 빌더 패턴을 사용해서 UI를 만드는 방법을 살펴본다.
7장, 패턴 조합(Combining Pattern): 두 개의 새 구조 패턴인 프로토타입과 데코레이터(decorator) 패턴을 소개, 시연하고, 개별 패턴의 유연성에 대해서 살펴본다. 그런 다음 패턴을 사용해 스위치와 라디오 그룹 같은 다양한 복합 버튼으로 구성된 UI를 제어하면서 연습하게 된다.
8장, 컴포지트 패턴(Composing Pattern): 컴포지트 패턴에 집중해 여러 상황에서 컴포지트 패턴을 사용하는 방법과 올바른 상황을 선택하는 방법에 대해서 알아본다. 다음으로 중첩 UI를 보여주기 위한 실제 예제를 계속 사용한다. 이 예제에서는 영구 데이터의 저장과 검색을 살펴보고, 내부 저장소를 사용해 공유 환경변수(shared preference) 형태로 앱 파일과 사용자 설정을 사용하는 방법을 살펴보겠다.
9장, 옵저버 패턴(Observing Pattern): 한 활동에서 다른 활동으로의 전환에 관련된 시각적인 과정을 살펴보고, 이 과정이 단순한 데코레이션 이상의 방법이 되는지 알아본다. 독자는 전환(transitions)과 공유 요소(shared elements)를 적용해 모바일 기기의 최소 화면 공간을 효율적으로 사용하고, 앱 사용과 작업을 단순화하는 방법을 배울 것이다.
10장, 행위 패턴(Behavioral Pattern: 주요 행위 패턴인 템플릿(template), 전략(strategy), 비지터(visitor), 그리고 상태(state) 패턴에 집중한다. 그리고 개별 패턴의 동작 예제를 제공하고 패턴의 유연성과 사용법을 다룬다.
11장, 웨어러블 패턴(Wearable Pattern): 안드로이드 웨어(Android Wear), TV와 오토(Auto)의 작업을 보여주고, 차례대로 설정, 구성하는 방법을 설명한다. 안드로이드 웨어 앱과 핸드헬드(handheld)앱의 차이에 대해서도 살펴본다.
12장, 소셜 패턴(Social Pattern): 웹 기능과 소셜미디어를 추가하는 방법을 살펴본다. 먼저 웹뷰(WebView)와 내부 웹앱을 만드는데 웹뷰를 사용하는 방법을 살펴본다. 다음으로 앱을 페이스북에 연결하는 방법을 분석한다. 12장 마지막에 트위터와 같은 다른 소셜 플랫폼을 검토한다.
13장, 배포 패턴(Distribution Pattern): 안드로이드 앱 배포, 게시와 수익화에 대해서 살펴본다. 독자는 등록과 게시 과정을 거쳐 광고 옵션을 살펴보고, 어떤 목적에 가장 적합한지 확인한다. 마지막으로 배포의 몇 가지 팁과 트릭으로 잠재적인 사용자를 극대화하는 방법을 살펴보겠다.


지은이의 말

이 책은 검증된 프로그래밍 철학인 디자인 패턴을 앱에서 최대한 활용하는 방법에 대한 종합적인 가이드다. 디자인 패턴은 개발자가 직면하는 많은 문제를 해결하는 논리적이고 우아한 접근 방식을 제공하고, 문제에서 해결책에 이르는 명확한 경로를 만드는 가이드 역할을 한다. 디자인 패턴을 적용한다고 모범 사례가 되는 것은 아니지만, 디자인 패턴은 문제를 해결하는 과정을 지원하고 설계 결함을 쉽게 발견하도록 도와준다 .
디자인 패턴은 매우 다양한 플랫폼에서 구현할 수 있고, 많은 프로그래밍 언어로 작성할 수 있다. 어떤 코드 라이브러리는 내부 동작의 일부에 패턴을 적용하기도 한다. 그리고 이미 많은 독자는 자바 옵저버(Observer)와 옵저버블(Observable) 클래스에 대해서 익숙할 것이다.
앞으로 살펴볼 안드로이드 SDK는 팩토리, 빌더와 리스너 같은 다양한 패턴을 최대한 활용하게 한다. 내장된 디자인 패턴을 살펴보겠지만, 책의 대부분은 사용자 정의 패턴을 만들어서 안드로이드 개발에 적용할 수 있는 방법을 살펴볼 것이다. 개별 디자인 패턴을 차례대로 살펴보기보다는 개발자의 관점에서 주제에 맞게 접근하고, 안드로이드 앱을 개발하는 과정에서 발생하는 개별 디자인 패턴을 분석하면서 앱 개발의 측면을 살펴본다.
이 여정을 명확히 하기 위해서 중소기업을 지원하는 가상의 앱에 집중하며, 가상의 앱을 개발하면서 UI 디자인, 내부 로직과 사용자 상호 작용 같은 주제를 다루는 앱을 개념부터 배포까지 할 계획이다. 각 단계에서 처음에는 추상적인 형태로 패턴을 분석하고, 다음으로 특정 상황에 적용해서 개별 과정과 관련된 디자인 패턴을 살펴보겠다. 이 책의 마지막까지 안드로이드 개발의 모든 측면에 디자인 패턴을 적용하는 방법과 모범 사례를 활용하는 방법을 배울 것이다. 특정 패턴 자체보다 디자인 패턴의 개념이 더 중요하다. 패턴은 특정 목적에 맞게 적용할 수 있어야 하고, 이런 방식으로 앱 개발에 접근해 완전히 새로운 자체 패턴을 개발할 수도 있다. 

작가 소개

저 : 카일 뮤

Kyle Mew
80년대 초부터 프로그래밍을 시작했고 여러 기술 웹사이트에 글을 썼다. 또한 3편의 라디
오 극본과 안드로이드 개발에 관한 3권의 책을 썼다.

 

역 : 송무찬

네오위즈, 엔씨소프트 등에서 8년간 서비스를 개발했고, 현재는 미국 실리콘 밸리에 있는 회사에서 서버와 안드로이드 앱을 동시에 개발하고 있다. 서버리스(Serverless) 아키텍처 도입으로 서버에 대한 부담이 많이 줄어든 덕분에 앱 개발에 더 집중하고 있다. 안드로이드가 설치된 IOT 기기나 연관 프로젝트에 관심이 있으며, 서버와 효율적인 통신 방법에도 관심이 있다.
『카산드라 완벽 가이드』(한빛미디어, 2011)를 공동 번역했고, 스레드 작업을 효율적으로 배치해 성능을 개선할 수 있는 『안드로이드 애플리케이션의 성능 개선을 위한 스레드 관리』(한빛미디어, 2015)라는 책을 썼다.  

 

목 차

1장. 디자인 패턴
__이 책의 효과
__구현 예제
____시나리오
____문제점
____해결 방안
__플랫폼 버전 결정하기
__지원 라이브러리
__팩토리 패턴
____UML 다이어그램
__앱 실행과 테스트
____실제 기기에 연결하기
____가상 기기에 연결하기
____기기 모니터링하기
__추상 팩토리 패턴
____여러 팩토리와 작업하기
__요약


2장. 생성 패턴
__테마 적용하기
__색과 텍스트 사용자 정의
____팔레트 사용하기
____텍스트 사용자 정의
__이미지 리소스 추가하기
____화면 밀도 관리하기
____리소스 지정해서 사용하기
__카드뷰 만들기
____카드뷰 속성 이해하기
____카드뷰 메트릭스 적용하기
____팩토리 패턴 개선하기
__빌더 패턴 적용하기
__요약


3장. 머티리얼 패턴
__앱 바
____이미지 에셋
____액션 적용하기
____앱 바 구조
____폰
____태블릿
__내비게이션 드로어
____드로어 생성
____키라인 비율
____드로어 활성화하기
____프래그먼트 추가하기
____오른쪽 드로어
__싱글톤 패턴
__요약


4장. 레이아웃 패턴
__선형 레이아웃
____가중치와 그래비티
__상대 레이아웃
____퍼센트 지원 라이브러리
__화면 회전
__큰 화면 레이아웃
____너비 식별자
____레이아웃 별칭
__전략 패턴
__요약


5장. 구조 패턴
__목록 만들기
__목록 항목 레이아웃
____머티리얼 폰트 크기
__데이터 연결하기
__문자열 리소스 번역하기
____어댑터와 레이아웃 매니저
__어댑터 패턴
____브리지 패턴
__파사드 패턴
__기준 패턴
__요약


6장. 패턴 활성화
__콜랩스 툴 바
__데이터 팩토리 패턴 적용하기
__항목 레이아웃 배치하기
__리사이클러뷰와 팩토리 사용하기
__구분선 추가하기
__플로팅 액션 버튼 설정하기
__대화 상자 빌더
____사용자 정의 대화 상자
__스와이프와 닫기 액션 추가하기
__레이아웃 빌더 만들기
__요약


7장. 패턴 조합
__개요 명세
__프로토타입 패턴
____프로토타입 설정하기
____프로토타입 적용하기
__데코레이터 디자인 패턴
____데코레이터 설정하기
____데코레이터 적용하기
____데코레이터 확장하기
__샌드위치 빌더 패턴
____패턴 적용하기
____UI에 연결하기
__패턴 선택하기
__데코레이터 추가하기
____패턴 붙이기
____UI에 패턴 연결하기
__요약


8장. 컴포지트 패턴
__컴포지트 패턴
____빌더 추가하기
____레이아웃 컴포저
____컴포넌트 추가하기
____컴포지트 만들기
____컴포지트 레이아웃 만들기
____실행 중에 레이아웃 포매팅
__저장소 옵션
____정적 파일 만들기
____앱 파일 만들고 수정하기
__사용자 프리퍼런스 저장하기
____액티비티 생명 주기
____프리퍼런스 적용하기
____고유 식별자 추가하기
__요약


9장. 옵저버 패턴
__옵저버 패턴
____패턴 만들기
____알림 추가하기
____옵저버와 옵저버블 유틸리티
__알림
____인텐트 설정하기
____알림 사용자 정의와 설정하기
____가시성과 우선 순위
__서비스
__요약


10장. 행위 패턴
__템플릿 패턴
____템플릿 확장하기
____전략 패턴
__비지터 패턴
__상태 패턴
__요약


11장. 웨어러블 패턴
__안드로이드 TV
____TV 홈 화면
____TV MVP 패턴
____TV 앱 구조
____추천 카드
__안드로이드 웨어
____웨어러블 기기와 연결하기
____화면 모양 관리하기
____웨어러블 알림
____센서 읽기
__안드로이드 오토
____자동차 안전 고려 사항
____오토 앱 설정하기
__요약


12장. 소셜 패턴
__웹 페이지 추가하기
____링크 포함하기
____WebSettings과 JavaScript 설정하기
____웹뷰에 적합한 HTML 작성하기
__페이스북 연결하기
____페이스북 SDK 추가하기
____페이스북 앱 ID 만들기
____‘좋아요’ 뷰 추가하기
__콘텐츠 빌더
__트위터 통합하기
____트윗 보내기
__요약


13장. 배포 패턴
__플랫폼 지원 범위 확장하기
__앱 게시하기
____서명된 APK 생성하기
____개발자 등록하기
____구글 플레이 스토어에 앱 게시하기
____이메일과 웹사이트에 배포하기
__앱 홍보하기와 수익 올리기
____앱 홍보하기
____앱으로 수익 올리기
____인앱 결제
____광고 포함하기
__요약

역자 소개

01. 반품기한
  • 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
  • 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
02. 반품 배송비
반품 배송비
반품사유 반품 배송비 부담자
단순변심 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다.
상품의 불량 또는 오배송 고객 부담이 아닙니다.
03. 배송상태에 따른 환불안내
환불안내
진행 상태 결제완료 상품준비중 배송지시/배송중/배송완료
어떤 상태 주문 내역 확인 전 상품 발송 준비 중 상품이 택배사로 이미 발송 됨
환불 즉시환불 구매취소 의사전달 → 발송중지 → 환불 반품회수 → 반품상품 확인 → 환불
04. 취소방법
  • 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
  • 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
05. 환불시점
환불시점
결제수단 환불시점 환불방법
신용카드 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) 신용카드 승인취소
계좌이체 실시간 계좌이체 또는 무통장입금
취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준)
계좌입금
휴대폰 결제 당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소
전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준)
당일취소 : 휴대폰 결제 승인취소
익월취소 : 계좌입금
포인트 취소 완료 후, 당일 포인트 적립 환불 포인트 적립
06. 취소반품 불가 사유
  • 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
  • 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
  • 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
  • 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
  • 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
  • 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.

환불불가
상품군 취소/반품 불가사유
의류/잡화/수입명품 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우
계절상품/식품/화장품 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
가전/설치상품 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.)
자동차용품 상품을 개봉하여 장착한 이후 단순변심의 경우
CD/DVD/GAME/BOOK등 복제가 가능한 상품의 포장 등을 훼손한 경우
내비게이션, OS시리얼이 적힌 PMP 상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우
노트북, 테스크탑 PC 등 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우