Programming/Design pattern (22) 썸네일형 리스트형 [Design pattern] 브릿지 패턴(Bridge) 패턴 브릿지 (Bridge) 패턴브릿지(Bridge) 패턴은 추상화와 구현을 독립적으로 분리하여 각각을 독립적으로 확장 가능하게 만드는 구조입니다.쉽게 말하면 기능의 계층과 구현의 계층을 따로 분리해서, 서로 독립적으로 확장할 수 있도록 하는 디자인 패턴입니다. 추상화 계층시스템에서 무엇을 할 것인가에 대한 정의 즉, 사용자 입장에서의 기능/행위를 다루는 계층입니다.추상화 계층은 클라이언트에서 사용할 인터페이스를 정의합니다. 구현 계층시스템에서 어떻게 할 것인가에 대한 정의 즉, 실제 동작을 담당하는 계층입니다.추상화 계층에서 정의한 인터페이스를 구현합니다. 브릿지 패턴을 사용하는 이유는 아래와 같습니다클래스 상속으로 기능을 확장하면 클래스 폭발 문제가 발생합니다.기능과 구현을 따로 두면 유지보수와 확장성에 .. [Design pattern] 어댑터(Adapter) 패턴 어댑터(Adapter) 패턴어댑터 패턴은 서로 다른 인터페이스를 가진 객체들을 연결해주는 디자인 패턴입니다. 기존 클래스의 인터페이스가 현재 요구사항과 맞지 않을 때, 중간에 어댑터를 끼워서 호환성을 맞추는 역할을 합니다. 이를 통해 인터페이스가 호환되지 않는 클래스들이 함께 작동할 수 있습니다.어댑터 패턴은 다음과 같은 경우에 사용합니다기존 코드(또는 외부 라이브러리)의 인터페이스를 변경하지 못할 때레거시 코드와 신규 코드가 함께 작동해야할 때API, DB, 서드파티 모듈 등 외부 시스템을 기존 시스템에 맞게 감싸야할 때어댑터 패턴 사용 예제어댑터 패턴을 설명하기 위해 간단한 로그시스템으로 예제를 구성하였습니다.기존 프로젝트는 최근 방식의 Logger.log(message) 인터페이스를 사용하지만, 오.. [Design pattern] 프로토타입(Prototype) 패턴 프로토타입(Prototype) 패턴프로토타입 패턴은 기존 객체를 복제(clone)해서 새로운 객체를 생성하는 디자인 패턴입니다.새로운 인스턴스를 만들 때 클래스 생성자(__init__)를 거치지 않고, 기존 객체를 기반으로 빠르게 복제할 수 있도록 합니다. 객체를 일일이 새로 만드는 게 아니라, 샘플 객체를 복사해서 재사용하는 방식입니다.프로토타입 패턴은 다음과 같은 경우에 사용됩니다.객체 생성 비용이 크거나, 객체 생성 과정이 복잡한 경우다양한 구성의 인스턴스를 자주 생성해야 하는 경우런타임 시점에 객체 구조를 동적으로 정의하고 싶은 경우Python의 프로토타입 패턴 생성 : copy 모듈import copyoriginal = {"name": "John", "skills": ["Python", "Sec.. [Design pattern] 빌더(Builder) 패턴 빌더패턴 (Builder Pattern)빌더(Builder) 패턴은 복잡한 객체의 생성 과정을 단계별로 나누어 객체 생성의 유연성과 가독성을 높이는 생성(Creational) 디자인 패턴입니다. 말그대로 조립하듯이 객체를 생성하는 구조입니다.빌더패턴은 아래와 같은 경우에 사용합니다. 생성자 인자가 많을 때생성자 오버로딩이 불가능한 언어(Python 포함)에서는 조건별 생성이 불편특정 필드만 선택적으로 설정하고 싶을 때 유용메소드 체이닝(method chaining) 방식으로 직관적인 코드 작성 가능 빌더패턴 예제class User: def __init__(self, username, email=None, age=None, phone=None, address=None): self.use.. [Design pattern] 팩토리(Factory) 패턴 팩토리 (Factory) 패턴팩토리 패턴은 객체 생성 로직을 별도의 클래스나 메서드로 분리하여,사용자가 객체의 구체적인 생성 방식은 알 필요 없이 인터페이스만으로 객체를 생성할 수 있게 해주는 디자인 패턴입니다.쉽게 말해, 객체 생성에 대한 책임을 팩토리에 위임하는 방식입니다.팩토 패턴은 다음과 같은 경우에 사용합니다.객체 생성 방식이 복잡허간 조건에 따라 달라지는 경우코드의 결합도를 낮추고 확장성을 높이기 위해OCP(Open Closed Principle)를 만족하기 위해 팩토리 패턴 예제class Notification: def notify(self, message: str): raise NotImplementedError("서브클래스에서 구현해야 합니다.")class EmailNo.. [Design pattern] 싱글톤(Singleton) 패턴 디자인 패턴프로그래밍에서 디자인패턴이 무엇인지에 대해 간략하게 설명하자면자주 반복되는 문제를 효율적이고 일관성 있게 해결하기 위해 정형화된 코드 구조 또는 해결 방법을 의미합니다. 위의 말을 조금 풀어서 이야기한다면소프트웨어 개발 중에 자주 만나는 문제 상황들을 모아두고이를 해결하는 검증된 코드 설계 방식으로 정리해둔 '코딩 설계 모음집' 같은 것즉, 코드를 작성할 때 무작정 새로 고민하지 않고 문제 유형별로 재활용 할 수 있는 설계 템플릿 같은 역할을 합니다.디자인 패턴은 GoF(Gang of Four)의 23가지 클래식 패터을 기준으로 분류하는데, 크게 생성(Creational), 구조(Structure), 행위(Behavioral) 패턴으로 나뉩니다. 생성패턴 (Creational Patterns.. 이전 1 2 3 다음