728x90
반응형

분류 전체보기 99

[디자인패턴] 템플릿 메소드 패턴 | 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(..

OPIC 9월 시험 후기 | 난이도 4-4 | 질문 정리

(나두 짤 추가해보기) 와아 오랜만에 프로그래밍 아닌 다른 주제로 글을 써 보네요 하핫.. 오픽이 만료가 되기도 했고, 이직도 하고 싶기도 하고.. 영어 레벨도 테스트 해보고 싶고 해서 겸사겸사 오랜만에 오픽을 봤어요.. 사실 지원하고 싶던 회사가 있었어서, 그거 지원하는 겸해서 2일 뒤 시험을 부랴부랴 예약했다.. 달력을 보면 알 수 있듯.. 준비할 수 있는 시간이 없었다.. 이렇게 시간도 없는데, 왠지모를 자신감에 준비를 진짜 별로 안했다.. 그렇게 시험 날이 되었고...... 시험은 너무 너무 너무 어려웠다.. 3년전에 시험을 봤었는데 2018년 오픽은 시험 질문이 간단하고, 서베이 기반으로 많이 나왔었는데.. 이번 오픽은 서베이 문제는 별로 안나오고 돌발 질문이 많이 나왔던 것 같다. 내가 기억하..

카테고리 없음 2021.09.13

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

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

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

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

[Linux] 이더넷 드라이브 설치

리눅스 설치 할 때마다 이더넷 연결이 너무너무너무 문제를 일으킨다.. 그래서 정리해두기! 1. 랜카드 정보 확인 이전에 정리해뒀던 방법 그대로 이번에 해보려고 하니 제대로 되지 않았다. 그 이유를 알아보니 랜카드 정보가 다른데, 계속 같은 방법으로 하려고 했다는 것! 내가 한것은 Intel 과 Realtek 에 맞는 방법이니 다른 제품이라면 검색을 다시 해보시는게.. $sudo lshw -C network 하면 network 에 관련된 하드웨어 정보들을 준다. - Intel - Realtek 2. 확인한 랜카드에 따라 드라이브를 설치한다. - Intel -1. https://downloadcenter.intel.com/download/15817/Intel-Network-Adapter-Driver-for-..

WORK/Linux 2021.08.03

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

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

[Android] Jack server 빌드 에러

안드로이드 빌드하다보면 가끔 발생하는 Jack server 빌드 에러들과 해결법을 정리해두었습니다. #1. Try 'jack-diagnose' FAILED: /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 2>&1 || (exit 0) ) && (JACK_SERVER_VM_ARGUMENTS=\"-Dfile.encoding=UTF-8 -XX:+TieredCompilation\" prebuilts/sdk/tools/jack-admin start-server 2>&1 || exit 0 ) && (pre..

WORK/Android 2021.05.11
728x90
반응형