본 게시글은 '헤드퍼스트-디자인 패턴 (개정판)'을 기준으로 작성된 글입니다. 데코레이터 패턴이란? 객체의 추가 요소를 동작으로 더할 수 있다. 데코레이터를 사용하면, 서브클래스를 만들 때 보다 훨씬 유연하게 기능을 확장할 수 있다. 가정 - 카페 카페의 음료 주문 시스템을 구현하는 상황을 가정해보자. 가정 1 카페에는 아이스티도 있고, 카페모카도 있고, 아이스 아메리카노 등 여러가지 음료가 있다. 공통적으로 가지고 있는 '음료'라는 성질을 가지고 있는 클래스를 만들고, 이것을 상속받아 각 음료를 구현하였다. 가정 1의 문제 만약에 새로운 손님이 와서 '휘핑도 추가해주시고, 여기 샷도 추가해주세요' 와 같은 새로운 요구사항이 담긴 주문을 하게 된다면, 어떻게 될까? 다음 그림과 같이 매우 복잡한 결과가 ..
본 게시글은 '헤드퍼스트-디자인 패턴 (개정판)'을 기준으로 작성된 글입니다. 옵저버 패턴이란? 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다. 간단하게 말하면, 신문사와 구독자가 있을 때, 신문사를 주제 / 구독자를 옵저버라고 부른다. 주제 객체는 주제에서 중요한 데이터를 관리하고, 옵저버 객체의 경우에는 주제를 구독하며, 주제의 데이터가 바뀔 때 마다 갱신 내용을 전달 받는다. 핵심은 1대다 이다. 어떤 객체가 변화할 때 이와 연관된 여러 객체에게 직접 통보하지 않고, 중간 관리자(옵저버)를 두어 변화의 감지와 통보를 대신하게 한다 옵저버 패턴은 다양한 방식으로 구현할 수 있다. 보통은 주제 인터페이스와 옵저버 인터페..
본 게시글은 '헤드퍼스트-디자인 패턴 (개정판)'을 기준으로 작성된 글입니다. 전략 패턴이란? 전략 패턴이란 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. 왜 사용할까? 예를들어 오리 시뮬레이션 게임을 제작한다고 가정해보자. 먼저 Duck 이라는 슈퍼 클래스를 만들고, 클래스를 확장하여 다른 종류의 오리들을 만들었다고 가정해보자. 만약 fly() 기능을 추가해달라고 한다면? 기존의 Duck 클래스에 fly()를 추가해주고, 각 서브클래스에서 fly()를 상속받게 해준다. 날면 안되는 오리가 있다면? 날면 오리가 안되는 오리가 있다면, 수퍼 클래스에 fly()를 추가하는 행동으로 날면 ..
바코드 스캔 라이브러리 중에 zxing 라이브러리가 있다. 자세한 내용은 아래 참조 https://github.com/journeyapps/zxing-android-embedded#custom-layout GitHub - journeyapps/zxing-android-embedded: Barcode scanner library for Android, based on the ZXing decoder Barcode scanner library for Android, based on the ZXing decoder - GitHub - journeyapps/zxing-android-embedded: Barcode scanner library for Android, based on the ZXing decoder..
화면 캡쳐 기능을 구현해보도록 하겠다. 가장 먼저 필요한 모듈을 implementation 해주겠다. // Architectural Components implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0" // Coroutines implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2' // Coroutine Lifecycle Scopes implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.