[디자인패턴] 데코레이터 패턴(Decorator Pattern)이란 무엇인가?
2023. 3. 8. 15:46
Programming/Design Pattern
정의 데코레이터(Decorator)는 사전적으로 무언가를 꾸며준다는 의미를 가지고 있다. 이에 착안해 데코레이터 패턴의 사전적 정의를 살펴보면 다음과 같다. 객체에 추가 요소를 동적으로 더할 수 있도록 하는 패턴으로, 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있다. 데코레이터 패턴은 Java I/O 에서 대표적으로 적용되고 있는 디자인 패턴이다. 사전적 정의가 실제 구현에서 어떻게 사용되는 것인지 와 닿기 힘들다. 이에 관련된 문제 상황과 해결 방법을 아래 문단에서 자세하게 알아보자. 문제 상황 우리는 샐러드 가게에서 사용할 전산 시스템을 만드는 상황을 가정해 보자. 만약 아래와 같이 샐러드 주문 표가 있다고 할 때, 각 샐러드 조합에 대한 클래스를 만드려면 어떻게 해야 할까? 만약 조합..
[디자인패턴] 전략 패턴(Strategy Pattern)이란 무엇인가?
2023. 3. 7. 19:45
Programming/Design Pattern
정의 이는 다음과 같은 의미를 가지고 있다. 어떤 문제를 해결하는 알고리즘을 클래스 별로 캡슐화해서, 필요에 따라 교체 가능하도록 하여 문제 상황마다 다른 전략(Strategy)을 세울 수 있게 하는 디자인 패턴 디자인 패턴을 접하는 많은 사람들이 그러하듯, 정의만 봐서는 어떤 내용인지 이해가 잘 되지 않는다. 아래와 같은 문제 상황과 예시를 보며 알아보자. 문제 상황 만약 객체 지향 프로그래밍을 이용해 다음과 같은 클래스를 작성해야 한다고 가정해 보자. Warrior(전사) 슈퍼 클래스를 만든다. 이 클래스는 공격 기능, 이동 기능이 있다. 이를 상속받는 서브 클래스들은 각각 다른 공격 기능, 이동 기능을 갖출 수 있다. 공격 기능에는 Slash, Arrow가 있고, 이동 기능에는 Walk, Ride가..
[Android/Kotlin] ViewModel 이란? (+ LiveData 포함)
2022. 1. 14. 10:06
Mobile/Android
LiveData의 정의 ViewModel은 그 내부에서 LiveData를 사용하고 있다. 그러므로 우선 LiveData에 대해서 알아보고자 한다. 안드로이드 개발자 공식 홈페이지에서 설명하고 있는 LiveData는 아래와 같이 정의되어 있다. (링크) LiveData is a data holder class that can be observed within a given lifecycle. This means that an Observer can be added in a pair with a LifecycleOwner, and this observer will be notified about modifications of the wrapped data only if the paired LifecycleO..
[Android/Kotlin] MVP 패턴을 구현해보자! (실습)
2022. 1. 13. 19:27
Mobile/Android
MVP를 적용할 상황을 설계 MVP를 적용할 간단한 예제를 구현하기 위해서, 다음과 같은 간단한 상황을 고려해보고자 한다. (1) 이름과 이메일을 입력하면 이 값들이 저장되는 기능 (2) 하단 Text View에 저장된 값들이 출력되는 기능 (3) Application을 다시 시작할 때, 이미 저장된 값이 있으면 불러오는 기능 사실 이러한 간단한 수준의 기능은 하나의 Class에서 모두 해결할 수 있지만, MVP 패턴에서는 어떻게 적용되는지 알아보기 위해서 모든 기능을 나누어 처리할 것이다. LinearLayout을 이용한 간단한 레이아웃을 작성해보았다. 이에 대한 Code는 다음과 같다. MVP의 구성 요소 설계하기 위에서 MVP를 적용할 상황을 간단하게 설계해보았다. 그 다음으로 해야 할 일은 MVP..
[Android/Kotlin] MVP 패턴이란?
2022. 1. 13. 19:20
Mobile/Android
MVP 패턴이란? Application의 시각적 요소와 그 뒤에서 돌아가는 Business Logic을 서로 영향 없이 쉽게 고칠 수 있도록 설계하는 방식이다. MVP 패턴이라는 이름은 이러한 요소를 정의하는 Model, View, Presenter 3가지 구성 요소의 Abbreviation 이다. 이 3가지 구성 요소를 정리하면 다음과 같이 기술할 수 있다. Model : Application의 데이터와 상태에서 대한 Business Logic 수행 View : 실제 View에 대한 직접적인 접근을 담당 Presenter : View와 Model 사이에서 데이터를 전달하는 역할 즉, MVP 패턴은 View와 Model이 Presenter를 통해서만 동작할 수 있도록 설계하기 때문에, View와 Mode..