728x90
반응형

SELF STUDY/Design Pattern 7

[디자인패턴] 템플릿 메소드 패턴 | Template Method Pattern | 안드로이드 예제

지난 게시글에서 퍼사드 패턴을 출근 준비로 표현했던 것 처럼..! 이번 템플릿 메소드 패턴도 동일하게 정리를 해봐야겠다.! 출근 준비에 대한 것을 큰 카테고리? 로 보면 알람 -> 씻기 -> 옷입기 -> 이동수단 으로 볼 수 있다. A와 B의 준비 단계를 보자! A : 알람 -> 씻기 -> 옷입기 (원피스) -> 이동수단 (자동차) B : 알람 -> 씻기 -> 옷입기 (파란티) -> 이동수단 (버스) 이다.! 여기서 A,B가 다르지 않고 동일한 과정은 빨간색으로, 다른 과정은 파란색으로 표시를 해보았다. 이를 코드로 표현을 해보자.! "A" 의 준비 과정 class ReadyToWorkA { public void start(TextView tv) { alarm(tv); wash(tv); clothes(t..

[디자인패턴] 퍼사드 패턴 | Facade Pattern | 안드로이드 예제

오랜만에 또 디자인패턴.! 오늘은 퍼사드 패턴을 해보려고 한다. 먼저, 위의 펭수처럼 출근을 하려면 필요한 단계가 있다. 나의 경우에는 알람으로 기상 -> 씻기 -> 옷입기 -> 전철을 타서 출근을 하는 단계를 거친다. 각 단계를 코드로 보면.. "알람" - 알람을 듣고 일어나거나.. 그냥 꺼버리는 경우.. ㅠ class Alarm { public void Wake(TextView tv){ tv.setText( (String) tv.getText() + "\nwake!" ); } public void OFF(TextView tv){ tv.setText( (String) tv.getText() + "\nalarm off!" ); } } "씻기" - 씻고 가거나 그냥 안씻고 가는 경우.. class Wash..

[Design Pattern] 어댑터 패턴 | Adapter Pattern

먼저, 위키 백과가 정의 하고 있는 어댑터 패턴은 어댑터 패턴(Adapter pattern)은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. (출처 :위키백과) 쉽게 말하면 ... 어댑터 패턴은 위의 짤에 나오는 인형탈과 같이 사람이 어떤 캐릭터를 표현하고자 할 때 사용하는 것!! 이렇게 A가 B의 역할을 하길 원할떄, 사용하는 것이 어댑터 패턴으로 생각하면 쉬울 것 같다. 오리와 가짜 오리, 가짜 오리가 오리처럼 행동하는 것을 어댑터 패턴에 적용시켜 보았다. 오리는 날수 있고, 꿱! 하고 말을 한다. 말을 하는 것, 나는 것으로 각 오리, 가짜 오리를 구성하게끔 만들었다. 이것을 안드..

[디자인패턴] 커맨드 패턴 | Command Pattern | 안드로이드 예제

우는 아이도 보면 울음을 그친다는 마법의.... 리모컨! 이 떠오르는 이번 디자인 패턴!! 은 바로바로바로!!!! 커맨드 패턴 입니다.! 커맨드 패턴이란 ? 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 매서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴이다. 출처 : 위키백과 쉽게 다시 설명을 하자면! 조명을 컨트롤 할 수 있는 리모컨이 있다고 생각해보자. 아래 그림에서 빨간 동그라미가 쳐져있는 버튼을 누르면 조명이 켜지게 된다. 이때 리모컨에 대한 구현을 어떻게 하면 좋을까 ? Q. 각 버튼에 대해 기능을 지정해 주면 되지 않을까? 1번, 2번, 3번 ... 버튼들에 대해 각각의 기능을 정의해주면 되지 않을까 생각해본다. if(..

[디자인패턴] 데코레이터 패턴 | Decorator pattern

오늘 공부해 볼 패턴은 데코레이터 패턴! 데코레이터 패턴 이란? 데코레이터 패턴(Decorator pattern)이란 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다. (출처 : 위키백과) 정의는 위와 같습니다. 제가 이해한 것을 바탕으로 데코레이터 패턴을 재정의 한다면, 기본 틀을 바탕으로 그 위에 살을 추가하여 점점 커지게 만드는 패턴 이라고 할 수 있을 것 같습니다. 예를 들어 설명해보겠습니다. 샌드위치 집에 방문했다고 생각을 합시다. 메뉴에서 샌드위치를 고르게 됩니다. 기본 샌드위치, 햄치즈 샌드위치 등등.. 그 뒤에 무엇을 결정하죠? 바로바로~ 토핑을 추가할지 말지 결정하게 됩니다. 위 사진처럼 기..

[디자인 패턴] Observer pattern | 옵저버 패턴

오늘의 함께 공부할 패턴은 옵저버 패턴 입니다. "옵저버" 라는 말을 들어본 적이 있나요? 저는 안드로이드 개발 하면서 database 값을 많이 사용하는데, 이때 이 값의 변화를 실시간으로 알고자 할때 "ContentObserver"를 사용했었습니다. 사실.. ContentObserver의 소스를 본 적은 없기에, 명확하게 동작을 알지 못하고 사용하고 있었습니다. 이번 스터디가 ContentObserver의 소스를 살펴보게 해주었습니다. 일단 옵저버 패턴! 우리 주변에서 사용법을 찾아보면 어떤 것들이 있을까요? 일단 저는 유튜브 구독 시스템으로 설명을 해보려 합니다. 위 사진에서 빨간 사각형 안에 있는 핸드폰들이 유튜브 한 채널을 구독하고 있는 5명의 구독자들 입니다. 만약 구독자들이 "구독"을 하고 ..

[디자인 패턴] 싱글톤 패턴

디자인 패턴 공부.. 숙제가 블로그에 정리하기였는데.. 이제야 정리하네요ㅕ,, 하하 다음엔 일등으로 해보겠습니다..! 싱글톤 패턴이란? 싱글턴 패턴은 인스턴스가 딱 1개만 생성되야 하는 경우에 사용되는 패턴 프린터로 예를 들면, 아래 사진처럼 "프린터" 한 대가 있고, 이 프린터를 8명의 user가 사용하길 원하고 있는 상황이 주어져 있다. 프린터 사용에 대한 과정을 코드로 작성해본다면 어떻게 하면 될까? 제안 1. 단순하게 생각하면, Printer를 관리하는 소스는 이렇게 구현하면 될 것 같다. 하지만 위의 소스처럼 구현을 하게되면, "public"으로 되어 있기 때문에 접근하는 사용자마다 PrinterManager 객체를 생성하게 되고 그럼 총 8개의 PrinterManager 객체가 생성되어 하나의..

728x90
반응형