옛글

    프로그래밍 Design Pattern 이해하기 - 4 팩토리 패턴

    팩토리 패턴 이번 시간엔 팩토리 패턴에 대해 알아보자. 이 한줄을 보자. MallardDuck을 Concreate Class라고 부른다. (abstract class를 상속받아 구체화된 객체를 Concreate class라고 부른다!) 위와같이 abstract class를 상속받아 서브클래싱을 하면, new MallardDuck();처럼. 이렇게 되면, runtime 도중에 Duck을 바꿀 수가 없게 된다. 쉽게 예를 들면 아래와 같이, 매번 상태에 따라 Duck을 바꿀 때 객체를 만들어야 하며, 수없이 많은 조건들이 생겨나게 된다! 이런 코드들이 많아지면, 앱을 유지보수하는데 굉장히 어려워지며 또한 잘못고쳤을 때 독립성이 유지되지 않아 에러가 많이 일어나게 된다. "new"의 잘못된 점은 무엇일까? 기..

    프로그래밍 Design Pattern 이해하기 - 3 데코레이터 패턴

    데코레이터(팅) 패턴 스타버즈라는 커피숍은 매우 빠른 속도로 성장한 초대형 커피전문점이다. 너무 빠른 성장을 했기 때문에 음료의 종류가 다양한데, 이 음료의 종류를 모두 포괄하는 음료 주문시스템을 만들려고 한다. 처음 사업을 시작할 때 만들어진 클래스는 아래의 구조를 띈다. - Superclass beverage는 '음료'를 나타내는 abstract 클래스며, 모든 음료수는 이를 상속받는다. - cost()는 abstract메소드로 자식클래스가 이를 새로 정의하여 가격을 구현한다. - 처음에는 4가지의 커피만 판매하고 있다. 하지만! 엄청나게 빠른 성장을 거두면서, 음료수의 종류가 폭발적으로 늘어가고 각 음료수에 우유, 두유, 모카, 생크림 등 다양한 종류가 생기면서 고민에 빠진다! 첨가물만 들어간다고 ..

    Android Rotate 3D Animation

    안드로이드 앱과 태블릿에서 nineOldAndroids를 사용하던 앱을 구글 TV용앱으로 포팅하던 중에, 애니메이션이 안되서 살펴보니, ViewPropertyAnimation이 구글 TV에서 돌아가지 않더군요 :( 안드로이드 기본에서 제공해주는 애니메이션은 정상작동하나, 제가 필요한 건 3D로 축을 기준으로 회전하는 애니메이션이였습니다! Camera와 Matrix를 통해 applyTransformation을 통해 구현을 하면 가능합니다~!

    [Anrdroid Wear] Wear에만 Notification 띄우기

    안드로이드 웨어에서는 onGoing 속성(취소가 불가능한 '진행중') 을 가진 Notification은 카드뷰를 띄우지 않습니다. 클라이언트 앱에서 NotificationCompat 을 이용해 'startForeground'로 앱을 띄우고 있는 경우에는 웨어에 카드뷰가 뜨지 않아 당황스럽습니다. (같은 Notification ID를 가질 경우 NotificationManager.notify와 startForeground를 중복으로 해도 뜨지않아요) 이런 경우에는 Group속성을 이용해봅니다. (Stack Notification)

    프로그래밍 Design Pattern 이해하기 - 2 옵저버 패턴

    옵저버 패턴 옵저버 패턴(Observer Pattern)은 한 객체의 상태가 바뀌면, 그 객체에 의존하는 다른 객체들이 자동으로 갱신되는 일:다 패턴이다. '한 객체의 상태가 바뀌면, 그 객체가 의존하는 다른객체들(옵저버)에게 연락이 간다''출판사가 주체라면, 구독자는 옵저버가 된다' 옵저버 패턴의 조건 옵저버 패턴에서 상태를 저장하고 있는 것은 주체다. 옵저버는 이 '상태'를 사용하고 있지만, '반드시' 가지고 있어야 하는 것은 아니다. 최대한 느슨하고 또 느슨하게 결합을 가지도록 노력해야 하낟. 객체간의 결합도가 높을 수록 유지보수가 힘든 작업이 될 수 밖에 없다. 1편에서 봤던 '스트레티지 패턴'을 보면 '상속'보다는 '위임(인터페이스)'을 쓰면서 메소드만 가진 객체를 분리했듯이! 어떤 패턴이든 결..

    프로그래밍 Design Pattern 이해하기 - 1 스트래티지패턴

    지난 번 '객체지향 프로그래밍 도대체 무엇인가?' 포스팅에 이어 Head First의 Design Pattern 책을 보며 정리를 해보려고 합니다. 원문에 대해 번역을 하며 진행을 할 예정입니다. 저작권 관련 문제가 있다면 말씀해주시면 바로 관련 내용은 삭제하도록 하겠습니다. Design Pattern 이 무엇인가? 많은 개발자들이 design pattern에 대한 같은 고민을 했을 것이고 또 그것에 대한 여러가지 해답에 대해 다룰 것입니다. 이런 것을 하기 전에 design pattern이 주는 장점과 디자인 패턴의 이론, 그리고 어떻게 디자인 패턴을 풀어나갈지 알아야 합니다. 패턴을 사용하기 위해 가장 좋은 방법은 현재 구현되어 있는 여러 다른 실제 소스를 보고 고민하고 나만의 것으로 만드는 것입니다..