일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Algorithm
- notification
- CollapsingToolbarLayout
- activity
- sqlite
- BOJ
- 백준
- LiveData
- lifecycle
- onLayout
- Navigation
- CustomView
- View
- ViewModel
- Behavior
- kotlin
- recyclerview
- Coroutine
- 안드로이드
- AppBarLayout
- 알림
- 코틀린
- 알고리즘
- Android
- hilt
- DataBinding
- CoordinatorLayout
- onMeasure
- room
- HTTP
- Today
- Total
목록Design Pattern (디자인 패턴) (5)
개발일지
Command Command 패턴은 객체의 메소드를 클래스로 만들어 캡슐화 하여 사용하는 패턴입니다. 만약 A Class에서 B Class 기능을 실행하려면 B Class가 의존적으로 필요하지만 Command 패턴을 사용하면 의존성을 제거할 수 있습니다. 불을 키는 Handler를 구현한다고 합시다. 생성자로 불을 키는 클래스를 받고 함수를 실행하면 됩니다. class NoCommandHandler( private val on: LightOnCommand ) { fun invoke() { on.execute() } } 만약 해당 클래스에서 불을 끄는 클래스로 변경한다면 내부의 코드를 변환해야하고 하나의 핸들러로 불을 키고 끄는 기능을 추가한다면 구조를 바꿔야 합니다. -> 기능과 핸들러가 의존적이고 기능..
MVVM Model View ViewModel로 이루어진 디자인 패턴이다. MVP 패턴에서 View와 Presenter가 1대1 관계, View가 Presenter에게 의존적인 단점을 보완한 디자인 패턴이다. View에서 사용자의 입력을 받으면 Command Pattern을 통해 ViewModel에 Action을 전달합니다. ViewModel은 해당 Action에 맞게 Model을 업데이트하고 ViewModel은 Model의 업데이트를 수신하여 값을 수정합니다. View도 마찬가지로 ViewModel의 변화를 감지하여 새로운 값을 바인딩합니다. View MVC 패턴에서 View처럼 사용자에게 UI를 제공한다. View는 ViewModel을 알지만 ViewModel은 View를 모릅니다. 또한 DataBi..
MVP Model View Presenter로 이루어진 디자인 패턴입니다. MVC 패턴에서 View와 Controller의 강한 결합도를 해결하기 위해 나온 디자인 패턴이며, Presenter를 통해 View와 Model의 결합을 줄일 수 있습니다. Model MVC 패턴에서 Model과 같이 데이터를 처리에 관한 로직을 담당합니다. 또한 View, Presenter와 독립적입니다. class Model { fun saveData(data: Int) { // Do Something } } View 사용자와 인터렉션을 담당하며 MVC 패턴에서 View와 비슷합니다. 사용자한테 입력을 받고 프레젠터에게 전달한다. 또한 Presenter가 Model에서 데이터를 불러와 가공하여 View에게 전달합니다. Vie..
MVC MVC는 Model View Controller로 어플리케이션 구성을 크게 3가지로 나누어 관리하는 디자인 패턴입니다. Model Model은 데이터베이스에 접근하여 데이터를 변경하거나 추출하여 가공하는 역할을 합니다. class Model { fun findByQuery(query: String): String { return "Hello World : $query" } fun save(data: String) { // Do Something } } 특징 View와 Controller와 독립되어야 하며 데이터에 관련된 로직만 있어야 한다. View View는 UI를 사용자에게 표시하는 역할을 합니다. class View( private val data: String ) { init { print..
Singleton Pattern 객체를 생성할 때 생성자가 호출되고 메모리에 올라가는 등 비용이 발생한다. 만약 객체를 생성할 때 비용이 크다면 객체를 자주 생성하는 일은 시스템에 부담이 클 것이다. 싱글톤 패턴은 객체를 한번만 생성하고 생성된 객체를 재사용하면서 객체의 재생성 비용을 줄이는 디자인 패턴이다. Database를 연결하고 접근하는 객체를 예로 들어 생각하면 DB를 연결할 때 드는 비용은 매우 비싸다. 하지만 연결을 한번 하고 생성된 객체를 재사용한다면 연결 비용을 줄일 수 있을 것이다. * 인스턴스화 하는 비용을 줄일 수 있다는 장점을 가지지만, 한번 생성한 인스턴스를 반납하지 않기 때문에 무분별한 싱글톤 패턴 사용은 오히려 메모리 낭비를 일으킨다. * 싱글톤 패턴은 객체간 결합도를 높이기..