디자인 패턴(Design Pattern)
은 소프트웨어 설계 과정에서 자주 발생하는 문제들을 해결하기 위한 재사용 가능한 해결책. 이러한 패턴은 특정 문제를 해결하는 방법을 제시하지만, 완성된 설계나 완성된 코드가 아니라 어떻게 문제를 해결할지에 대한 설명과 가이드라인을 제공함패턴 명 | 설명 |
---|---|
추상 팩토리 (Abstract Factory Pattern) | 서로 관련된 객체를 생성하는 인터페이스를 제공하는 패턴, 이를 구현한 구체적인 클래스를 통해 겍체를 생성, 이 패턴을 사용하면 객체 생성 코드를 클라이언트 코드에서 분리하고, 객체 생성 방식을 유연하게 변경할 수 있음 |
빌더 (Builder Pattern) | 복잡한 객체를 생성하는 과정을 캡슐화하여, 객체 생성의 일련의 과정을 간소화하고 유연하게 만듦, 객체 생성에 필요한 많은 단계를 가지는 경우에 유용하며, 단계별로 객체를 생성할 수 있도록 함 |
팩토리 메소드 (Factory Method Pattern) | 객체 생성을 하위 클래스에게 위임하여, 객체 생성 과정을 캡슐화하고 유연성을 높임, 생성할 객체의 타입을 인터페이스로 추상화하여, 클라이언트 코드와 객체 생성 코드를 분리 |
싱글톤 (Singleton Pattern) | 애플리케이션에서 오직 하나의 인스턴스만을 생성하고, 이를 전역적으로 접근 가능하게 만듦, 이를 통해, 하나의 객체 인스턴스만 사용해야 하는 상황에서 유용함 |
프로토타입 (Prototype Pattern) | 객체의 복사본을 생성하기 위한 패턴, 기존 객체를 복사하여 새로운 객체를 생성하는 방식으로 동작하며, 객체 생성에 드는 비용을 줄일 수 있음, 이를 통해 동적으로 객체의 타입이 변하는 상황에서 유용함 |
패턴 명 | 설명 |
---|---|
어댑터 (Adapter Pattern) | 호환되지 않는 인터페이스를 가진 클래스들을 함께 사용하기 위한 패턴, 기존 클래스를 수정하지 않고, 새로운 클래스를 추가하여 기존 클래스를 감싸서 새로운 인터페이스를 제공 |
브릿지 (Bridge Pattern) | 추상화와 구현을 분리하여 각각 독립적으로 변형할 수 있도록 하는 패턴, 추상화된 클래스와 실제 구현 클래스를 분리하여, 각각 독립적으로 변형할 수 있음 |
컴포지트 (Composite Pattern) | 객체들의 관게를 트리 구조로 구성하여 부분 - 전체 계층을 만들고, 클라이언트에서 객체들을 일관성 있게 다룰수 있도록 하는 패턴 |
데코레이터 (Decorator Pattern) | 객체에 추가적인 기능을 동적으로 첨가하는 패턴, 기존 객체를 수정하지 않고, 새로운 객체를 생성하여, 추가적인 기능을 첨가함 |
퍼사드 (Facade Pattern) | 복잡한 서브 시스템을 단순화된 인터페이스를 제공하여 사용자가 쉽게 접근할 수 있도록 하는 패턴 |
플라이웨이트 (Flyweight Pattern) | 객체 생성 비용이 큰 객체들을 공유하며 생성할 수 있도록 하여 메모리 사용을 최적하는 패턴 |
프록시 (Proxy Pattern) | 객체 대한 접근을 제어하거나 객체에 대한 추가적인 작업을 처리할 수 있도록 대리인 객체를 제공하는 패턴 |
프로퍼티 (Property Pattern) | 객체 내부의 데이터를 캡슐화하여, 데이터를 보호하고, 캡슐화된 데이터에 대한 일관성 있는 접근을 제공하는 패턴 |
패턴 명 | 설명 |
---|---|
책임 연쇄 (Chain of Responsibility Pattern ) | 요청을 처리할 수 있는 객체들을 연결하여, 각 객체가 요청을 처리하지 못할 경우, 다음 객체로 요청을 전달하는 패턴 |
커맨드 (Command Pattern) | 요청을 객체로 캡슐화하여, 요청을 발생시키는 객체와 요청을 수행하는 객체를 분리하는 패턴 |
인터프리터 (Interpreter Pattern) | 문법 규칙을 클래스화하여, 문장을 해석하고 처리하는 패턴 |
이터레이터 (Iterator Pattern) | 컬렉션 객체에 대한 반복 작업을 추상화하여, 컬렉션의 내부 구조를 노출하지 않고 요소들에 접근할 수 있는 패턴 |
미디에이터 (Mediator Pattern) | 객체들 사이의 복잡한 상호 작용을 조정하기 위해 중재자 역할을 수행하는 패턴 |
메멘토 (Memento Pattern) | 객체의 상태를 저장하고, 이전 상태로 복원하는 패턴 |
옵저버 (Observer Pattern) | 객체의 상태 변화를 감지하여, 이를 다른 객체에 알리는 패턴 |
스테이트 (state Pattern) | 객체의 상태에 따라 동작을 변경할 수 있도록하여, 객체의 상태 변화에 따른 동작을 캡슐화하는 패턴 |
스트래티지 패턴 (Strategy Pattern) | 객체의 동작을 여러 알고리즘 중에서 선택하여 변경할 수 있도록 하여, 동작을 캡슐화하는 패턴 |
템플릿 메소드 (Template Method Pattern) | 객체의 동작을 슈퍼 클래스에서 정의하고, 서브 클래스에서 구체적인 구현을 담당하는 패턴 |