본문 바로가기

전체 글

(28)
abstract-factory method 패턴 1. 필요성 추상 팩토리 패턴은 팩토리 패턴에서 팩토리를 추상화한 패턴이다. Factory 패턴 1. 필요성 이처럼 Component를 상속받은 자식들이 많은 곳에서 생성된다고 가정하자. 객체 생성이 많이 이루어지지 않는다면 큰 문제가 없지만 많이 이뤄지는 상황에서 자식 클래스의 생성자가 변 leehochang.tistory.com 예를 들어 라이트 모드와 다크 모드에서 생성되는 컴포넌트들이 다를 수 있다. 라이트 모드에선 라이트 버튼, 스위치, 드롭다운/ 다크 모드에선 다크 버튼, 스위치, 드롭다운 등을 생성해야 한다고 가정하자. 이러한 경우에 추상 팩토리 패턴을 적용할 수 있다. 이를 구조로 그려보면 이처럼 추상 클래스나 인터페이스를 만들어서 팩토리를 추상화하는 방식이다. 2. 추상 클래스 및 팩토리..
Factory 패턴 1. 필요성 자식 클래스가 많은 곳에서 생성되거나 자식 클래스들에 대해 드러내지 않고 숨기고 싶을 경우 팩토리 패턴을 사용한다. 대표적으론 라이브러리나 프레임워크에서 팩토리에 상수값을 넘겨줘 객체를 리턴받는 등의 예를 들 수 있다. 즉, 라이브러리나 프레임워크를 사용할 때 개발자들이 해당 객체에 대해 깊이 알 필요가 없이 간편하게 생성해 사용할 수 있도록하는 장점이 있다. 2. 컴포넌트 class 생성 abstract class Component { init { Log.e("component","name : ${getName()}") } protected abstract fun getName() : String } class Button : Component(){ override fun getName()..
Decorator 패턴 1. 필요성 객체에 기능들을 필요에 따라 장착할 수 있도록 할 때 사용한다. 예를 들어 종스크롤 슈팅 게임을 보면 전투기가 아이템을 먹거나 레벨업을 할 때마다 공격시에 무기들이 추가되는 경우에 사용할 수 있다. 2. 전투기들 만들기 interface Fighter { fun attack() } class XWingFighter : Fighter { override fun attack() { Log.e("XWingFighter", "탄환 발사") } } 3. 각 decorator를 만들기 위해 decorator 추상 클래스 생성 abstract class FighterDecorator(_fighter : Fighter) : Fighter { private var fighter : Fighter = _fig..