- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- blog
- rxjava
- n3문법
- errorhandling
- 책리뷰
- pullrequest
- 학습지
- coroutine
- 진짜학습지후기
- jlpt
- PR
- CustomTab
- github
- 진짜학습지
- Kotlin
- 책추천
- 일본어기초
- GIT
- 안드로이드
- 일본어문법
- 인공지능
- Android
- posting
- ai
- KotlinInAction
- 진짜일본어
- androidstudio
- suspend
- webflux
- 코틀린
목록기본기 채우기/디자인 패턴 (4)
코딩하는 개굴이
전략 패턴 전략 패턴은 전략에 일을 수행하는 방법이 여러가지일 때, 각 방법들을 추상화/캡슐화하고 로직을 사용하는 곳에서는 추상된 인터페이스만 사용함으로써 코드는 바뀌지 않지만 사용하는 곳마다 알고리즘은 바뀔 수 있게끔 하는 패턴이다. 예시로는 java 에서 자주 보이는 comparator를 들 수 있다. comparator 인터페이스 sort 시 비교하는 방법이 여러가지가 될 수 있으므로, comparator 가 직접 수행하는 로직은 추상화/캡슐화하고 사용하는 곳에서 추상된 인터페이스를 사용하면서 로직을 부분적으로 변경하는 방식 (ex. a 와 b를 비교 시, a 가 더 크다고 하고 싶다.) 이 인터페이스를 사용해서 원하는 비교 로직을 만들 수 있도록 하는 것이 concrete 한 stratagy를 만..
해당 내용은 Inflearn 의 코딩으로 학습하는 GoF의 디자인 패턴 강좌를 기반으로 정리되었음을 알립니다. 해당 내용은 주로 JAVA 기반으로 코드 설명이 진행됨을 알립니다. 행동 관련 디자인 패턴 Observer Pattern (옵저버 디자인 패턴) 다수의 객체가 특정 객체의 상태 변화를 감지하고 알림을 받는 패턴이다. Observer Pattern 은 아래 형태로 구현한다. Subject는 여러 옵저버들을 등록하거나 해지할 수 있는 기능을 수행한다. Cleint는 Subject를 이용해 여러 Observer를 등록하고, Subject가 제공하는 여러 메서드를 이용해 Subject의 상태들을 변경할 수 있다. 이때, Subject 는 자신에게 등록되어있는 모든 Observer들을 순회하며 옵저버가 ..
해당 내용은 Inflearn 의 코딩으로 학습하는 GoF의 디자인 패턴 강좌를 기반으로 정리되었음을 알립니다. 해당 내용은 주로 JAVA 기반으로 코드 설명이 진행됨을 알립니다. 객체 생성 관련 디자인 패턴 팩토리 메서드 패턴 어떤 객체를 생성하는 책임을 구체적인 클래스가 아니라 추상적인 인터페이스의 메서드로 감싸는 디자인 패턴이다. 만일 특정 클래스에서 모든 것을 구현한다면 로그를 보는 등으로 절차를 따라가야만하고, 로직이 복잡해진다. 또한, 만일 특정 클래스에서 모든 것을 구현할 경우, 확장을 위해서는 기존 코드의 변경이 불가피한 구조가 될 수 있다. 예를들어, Cat 이라는 클래스 하나에서 생성자 등의 분기로 KoreanCat, BritishCat 이라는 두 종류를 받는다고 한다면, 분기하며 구현되..
해당 내용은 Inflearn 의 코딩으로 학습하는 GoF의 디자인 패턴 강좌를 기반으로 정리되었음을 알립니다. 해당 내용은 주로 JAVA 기반으로 코드 설명이 진행됨을 알립니다. 객체 생성 관련 디자인 패턴 SingleTon Pattern (싱글턴 패턴) 목적 어떤 클래스의 인스턴스를 오직 하나만 만들어서 제공 하나의 인스턴스를 글로벌하게 접근할 수 있는 방법을 제공 아래처럼 new 를 사용하여 생성자를 사용하면, 인스턴스가 여러개 생성이 가능하다. Sample sample1 = new Sample(); Sample sample2 = new Sample(); boolean isSame = (sample1 == sample2); //false 구현 방법 기본적인 구현 따라서, 생성자를 private 로 생..