본문 바로가기

전체 글

(112)
[ GOF ] 브릿지 패턴 - Bridge Pattern 개념 Topic = 브릿지 패턴의 개념을 자세하게 알아보자.브릿지 패턴🔑 패턴 의도브릿지 패턴은 독립적으로 확장할 수 있는, 밀접하게 관련된 두 개 이상의 차원을 가진 하나의 계층 구조를 두개의 개별 계층구조 ( 추상부, 구현부 ) 로 나눈 후 각각 독립적으로 확장 및 수정할 수 있도록 하는 구조 디자인 패턴이다. 🌟bridge 패턴의 핵심은 하나의 계층 구조를 추상부, 구현부로 나누는 것 [ ❓브릿지 패턴의 적절한 적용 대상 : 두 개 이상의 차원을 가진 하나의 계층 구조 ]두 개 이상의 차원을 가진 하나의 계층 구조는, 조금 풀어서 정리하면 이해가 될 것 같다. 먼저 브릿지 패턴의 예시를 검색해보니 대부분 아래 케이스에 해당했다.[ 구현부 :  윈도우, Mac, Linux ] , [ 추상부 : OS에 .. 2024. 10. 29. 13:54
[ GOF ] 파사드 패턴 - Facade Pattern with Kotlin Topic =  Facade 패턴의 의도와 개념에 대해서 정리해보기  🔑 Purpose복잡한 서브시스템의 단순화 ⇒ 구성과 사용의 분리여러 개의 객체가 복잡하게 상호작용 하는 경우, 이러한 상호작용을 관리하는 하나의 간단한 객체로 분리하여 클라이언트 단에서 복잡한 상호작용을 제어하지 않고 파사드 객체를 통해 기능을 간단하게 사용할 수 있다.왜 Facade 패턴을 사용해야 할까?  [ 요구사항 ]주문 요청 로직결제 로직관리자 - 신규 주문 알림[ Facade 패턴 미적용 예시 코드 ]class Order { fun startOrder() { // 주문 요청 로직 }}class Purchase { fun startPurchase() { // 결제 로직 }}cl.. 2024. 10. 15. 12:25
[ GOF ] 상태 패턴 - State Pattern with Kotlin Topic =  상태 패턴의 개념에 대해서 학습해보고 Kotlin에서 적용 예시를 만들어보기. 🔑 Purpose객체의 상태를 캡슐화한 클래스들로 분리하여, 복잡한 조건문을 사용하지 않고, 위임을 통해 객체의 상태에 따라 다른 행동을 할 수 있도록 한다.  Why   위 예시 사진 이미지와 같이 TodoList의 각각의 할 일들의 개별 속성 ( 마감기한, 선택목록, 체크박스, 텍스트, 백분율 등 ) 의 표기는 해당 객체의 속성이 날짜면 날짜 데이터만을 표기하고, 백분율은 숫자만을 표기하며 %로 표기하는 등 각각의 상태에 따라 다른 표기 방식을 갖게 된다. 위 상황을 상태 패턴을 적용하지 않은 코드로 일부분을 작성해보면 다음과 같이 작성할 수 있다.import io.github.oshai.kotlinlog.. 2024. 10. 10. 14:31
[ GOF ] 싱글톤 패턴, object - Singleton Pattern with Kotlin Topic =  싱글톤 패턴 개념과 정적 매소드 - Kotlin object, companion object 싱글톤 구현 방식 정리 🔑 Singleton Purpose클래스에 인스턴스가 하나만 있도록하여서 생성된 하나의 인스턴스에 대한 전역 접근을 제공하는 것.  싱글톤 패턴 개념 싱글톤 패턴은 여러 클래스에서 특정 클래스 A 객체를 생성할 때마다 새로운 A클래스의 인스턴스를 생성하는 것이 아닌, 이미 생성된 하나의 클래스 A 인스턴스를 여러 클래스에서 접근하여 사용하도록 하는 것으로 전역 접근을 통해 메모리 효율성, 클래스 메서드 사용의 편의성을 제공한다. [ 정적 메서드와 싱글톤은 다르다. ]정적 메서드정적 메서드는 클래스에 속하고, 인스턴스를 생성하지 않고도 호출할 수 있는 메서드이다.정적 메서드.. 2024. 10. 8. 20:19
[ RDBMS ] 정규화 1 - Functional dependency, Key, Prime Attribute Topic =  DB 를 설계, 정규화 하는데 필요한 FD, Key, Prime Attribute 개념을 정리해보자.  - 목차 -1. 정규화를 적용하지 않아 발생할 수 있는 update anomaly 를 알아보기.2. 정규화를 진행하기 위해 알아야 하는 FD 개념 알아보기.3. Key의 분류와 프라임, 논 프라임 속성 분리 기준을 알아보기.정규화 적용 및 정리는 정규화 [ 2 ] 에서 작성하기.  정규화란?정규화는 관계형 데이터베이스( RDBMS ) 에서 데이터의 중복을 줄이고, 데이터가 관심사 별로 처리되도록 테이블을 쪼개 성능을 향상 시키는 활동이며이 작업은 update anomaly (이상 현상) 를 최소화 하여 데이터 무결성을 유지하는 것을 목표로 일련의 normal form ( 정규형 ) 에 .. 2024. 10. 6. 13:13
[ GOF ] 팩토리 매서드 패턴 - Factory Method Pattern with Kotlin Topic =  팩토리 매서드의 의도와 개념 학습 후 예제 작성해보면서 정리해보기 🔑 Purpose팩토리 매서드 패턴은 객체 생성 로직을 추상화하여 작성하는 것으로 객체 생성에 대한 로직 정의와, 객체가 사용되는 로직을 분리한 것으로 SRP( 단일 책임 원칙)와 OCP( 개방/폐쇄 원칙 ) 를 따를 수 있게 된다. 💡 디자인 패턴들을 분리해서 이해하지 않기 → 싱글톤과 같은 디자인 패턴은 다른 패턴들을 보완하기도 하고, 탬플릿 매서드 패턴을 상위 구조로두고 객체 생성에 초점을 맞춘 하위 구조로 팩토리 매서드 구조를 이용할 수 있다.이 전 글에서 배운 탬플릿 매서드 패턴 ( 중복 알고리즘 분리하여 재사용 )과 상당히 유사한 구조로 이루어져 있다. 팩토리 패턴은 탬플릿 매서드 패턴의 응용 버전이기 때문이.. 2024. 9. 11. 22:48
[ GOF ] 전략 패턴 - Strategy Pattern with Koltin Topic =  Strategy 패턴의 의도와 개념을 학습하고 Template Method 패턴과 Strategy 패턴 차이 정리하기 🔑 Purpose전략 패턴 - 특정 알고리즘을 캡슐화하여서 Context 내에서 유연하게 알고리즘을 변경하여 사용할 수 있도록 하는 패턴  Strategy Pattern [ 상황 1 ]사용자들이 서비스를 이용하다가 악성 행위를 했을 때, 악성 유저 점수를 추가하고, 악성 점수 상향 처리에 걸린 시간을 로그로 남기고, 악성 유저 점수가 추가된 후에는 해당 회원의 악성 점수를 로그에 남긴다. [ ❌ Strategy 패턴 미적용 예시 ]private val logger =KotlinLogging.logger { }class User { private var count .. 2024. 9. 10. 18:36
[ GOF ] 탬플릿 메서드 패턴 - Template method with Kotlin Topic =  템플릿 메서드 패턴의 의도와 Kotlin 적용 예제 학습해보기 🔑Purpose변하는 것과 변하지 않는 것을 분리반복되는 공통 로직을 템플릿이라는 변하지 않는 뼈대로 정의해두고, 변하는 부분을 별도의 서브클래스로 정의하여 분리한다. 예시로 비교해보면서 학습하는 탬플릿 메서드 패턴 개념 fun main { fun algorithmA(){ val startTime = System.currentTimeMillis() // 알고리즘 풀이 val endTime = System.currentTimeMillis() val resultTime = endtime - startTime } fun algor.. 2024. 9. 9. 23:34