디자인패턴
-
Adaptor 패턴이란?디자인패턴 2024. 3. 7. 00:01
Adaptor란 무엇인가? 일반적으로 어댑터는 다른 전기나 기계 장치를 서로 연결해서 작동할 수 있도록 만들어주는 결합 도구입니다. 일상생활에서는 110V를 220V로 변환해주는 어댑터를 활용하거나 휴대폰을 220V 콘센트에 바로 연결할 수 없기 때문에 충전기라는 어댑터를 활용합니다. 소프트웨어에서는 Port and Adaptor라는 개념으로도 자주 등장합니다. 공통점은 내가 바로 제어할 수 없는것을 한단계 Layer를 통해 제어할 수 있도록 만든다는 것입니다. Adaptor 패턴 구조 코드를 통하여 바로 살펴보겠습니다. class AdaptorPatternTest { /** * Adapter 가 구현하는 인터페이스 * Client Interface : 클라이언트가 접근해서 사용할 고수준의 어댑터 모듈 ..
-
Delegate Pattern이란디자인패턴 2024. 3. 3. 00:01
Delegate Pattern이란? Delegate는 위임이라는 뜻을 가지며 객체가 자신의 기능을 다른 객체에게 위임하여 기능을 실행하는 디자인 패턴입니다. 동일한 기능에 대해 여러번 구현하기 힘드니 한번만 구현해두고 이를 위임시키는 방법을 사용합니다. 예제 - kotlin class Animal(private val cat: Cat){ fun cry() = cat.cry() } class Cat(){ fun cry() ="야옹" } @Test fun `delegate를 직접 구현해서 동물의 울음소리를 고양이 클래스에게 위임한다`(){ println(Animal(Cat()).cry()) } Animal이란 클래스가 Cat 클래스를 인자로 받고 Cat의 cry 메서드를 그대로 사용합니다. Animal 클래..
-
컴포지트 패턴이란?디자인패턴 2024. 2. 26. 00:01
개요 프로그래밍을 하면서 컴포지트 패턴을 종종 활용하곤 했습니다. 컴포지트 패턴에 대해 조금 더 자세하게 알아보고 이해해보고자 합니다. Composite 뜻 Composite는 복합, 합성이라는 의미를 가집니다. 복잡 재료라고 하면 한 가지 물질로 이루어지지 않고 단독 재료로는 얻을 수 없는 특성을 지니도록 합니다. 디자인패턴 관점에서 생각해 보면 여러 객체들을 복합적으로 구성한다고 생각할 수 있습니다. 해결하는 문제 상자에 여러가지 물체들이 있다고 생각해 보겠습니다. 이때 상자의 가격을 얻기 위해서는 각 물품들이 어떻게 가격이 구성되는지 계산하여 다 더해야 합니다. 현실에서는 모든 상자를 풀고 가격을 측정하면 되지만 프로그래밍적으로는 상자 안에 또 상자가 있을지 각 가격에 대해 계산이 필요하기 때문에 ..
-
템플릿 메소드 패턴이란?디자인패턴 2024. 2. 10. 00:01
템플릿 메서드 패턴이란? 기능의 뼈대(템플릿)와 실제 구현을 분리하는 패턴입니다. 부모 클래스에서 알고리즘의 골격을 정의하지만 해당 알고리즘의 구조를 변경하지 않고 자식 클래스들이 알고리즘의 특정 단계들을 오버라이드(재정의)할 수 있도록 지원합니다. 언제 사용할 수 있을까? 예를 들어 사용자들이 다양한 형식(PDF, DOC, CSV)의 문서들을 등록하고 해당 문서에서 일관된 형식의 의미 있는 데이터를 추출하고자 합니다. DocDataMiner, CSVDataMiner, PDFDataMiner 클래스에는 유사한 코드들이 보입니다. 굵은 글씨의 다양한 데이터 형식들을 처리(exteract, parse)하는 코드는 클래스마다 다르지만 분석을 수행하고 리포트를 만들어내는 과정을 동일합니다. 템플릿 메서드 패턴으..