티스토리 뷰
Desgin Pattern
- 프로그램을 개발하는 과정에서 빈번하게 발생하는 디자인상의 문제를 정리해서 간편하게 적용해서 쓸 수 있는 패턴형태로 만든 것
( 우리가 일상적으로 접하는 문제중 상당수는 다른 많은 개발자들이 이미 접했던 문제이며, 그에 따른 효율적인 해결법이 존재한다 )
디자인 패턴의 원칙
- 코딩이 명확하고 단순해야 한다
- 모듈은 한가지 기능만 하도록 작게 세부화 시킬 수 있어야 한다
- 재사용성이 높아야 한다
- 유지보수가 쉬워야 한다
- 리소스의 낭비가 없어야 한다
- 변경되는 부분을 찾아내고 변경되지 않는 부분으로 부터 분리한다
- 상속보다는 구성을 활용한다
- 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다
- 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다
- 추상화된 것에 의존하도록 만들어라 구상 클래스에 의존하도록 만들지 않도록 한다
디자인 패턴의 종류
1) 생성 패턴 (Creational Pattern)
- 인스턴스를 만드는 절차를 추상화하는 패턴
- 추상 팩토리 패턴(Abstract Factory Pattern)
: 상세화된 서브 클래스를 정의하지 않고도 서로 관련성 있거나 독립적인 여러 객체의 군을 생성하기 위해 인터페이스를 제공
- 빌더 패턴(Builder pattern)
: 복잡한 객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 분리하여 서로 다른 표현 결과를 만들 수 있게하는 패턴
- 팩토리 메서드 패턴(Factory Method Pattern)
: 객체를 생성하는 인터페이스를 미리 정의하고 인스턴스를 만들 클래스의 결정은 서브클래스에서 내림
- 프로토타입 패턴(Prototype Pattern)
: 생성할 객체의 종류를 명세하는 데에 원형이 되는 예시물을 이용하고 그 원형을 복사함으로써 새로운 객체를 생성하는 패턴
- 싱글턴 패턴(Singleton Pattern)
: 클래스의 인스턴스가 하나만 생성이 되게 보장하며 전역으로 설정이 되어 어디서든 접근이 가능하도록 제공한다
2) 구조 패턴 (Structural Pattern)
- 더 큰 구조를 형성하기 위해 어떻게 클래스와 객체를 합성하는 가와 관련된 패턴
- 어댑터 패턴(Adapter Pattern)
: 서로 다른 클래스끼리 함께 동작할 수 있도록 인터페이스를 변환하는 패턴
- 브릿지 패턴(Bridge Pattern)
: 구현에서 추상을 분리하여 이들을 독립적으로 다양성을 가질 수 있도록 하는 패턴
- 컴포지트 패턴(Composite Pattern)
: 각각의 단일 객체와 복합체를 한 종류의 클래스로 설계하여 사용자는 단일 객체든 복합체든 상관없이 다룰 수 있는 편리함을 부여하는 패턴
- 데코레이터 패턴(Decorater Pattern)
: 클래스에게 동적인 기능이나 임무를 추가하는 패턴
- 퍼사드 패턴(Facade Pattern)
: 복잡한 서브 시스템에 대해서 간단한 인터페이스를 제공하는 패턴
- 플라이웨이트 패턴(Flyweight Pattern)
: 크기가 작은 다수의 객체가 있을 때 모두가 갖는 본질적인 요소를 클래스화 하여 공유하므로써 메모리 절감의 효과를 보는 패턴
- 프록시 패턴(Proxy Pattern)
: 실제 객체로 접근을 통제 및 정보은닉을 하기 위해 대리 객체를 제공하는 패턴
3) 행동 패턴 (Behavioral Pattern)
- 책임사슬 패턴(Chain of Responsibility Pattern)
: 요청이 들어 왔을 때 요청을 보내는 객체와 그 요청을 받는 객체 상의 결합을 피하는 패턴
- 커맨드 패턴(Command Pattern)
: 요청을 객체의 형태로 캡슐화 하여 서로 요청이 다른 사용자의 명령을 지원하게 만드는 패턴
- 인터프리터 패턴(Interpreter Pattern)
: 언어의 다양한 해석 구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성하여 여러 형태의 언어 구문을 해석할 수 있게 만드는 패턴
- 이터레이터 패턴(Iterator Pattern)
: 컨테이너의 반복에 있어서 일관된 인터페이스를 두어 순차적으로 접근할 수 있는 방법을 제공하는 패턴
- 메디에이터 패턴(Mediator Pattern)
: 한 집합에 속한 객체들의 상호작용을 캡슐화하는 객체를 정의하는 패턴
- 메멘토 패턴(Memento Pattern)
: 객체의 상태를 관리하여 해당 객체가 이전 상태로 돌아갈 수 있게 하는 패턴
- 옵저버 패턴(Observer Pattern)
: 데이터에 대한 모든 감시자들의 갱신을 자동으로 할 수 있게 하는 패턴
- 스테이트 패턴(State Pattern)
: 상태를 일반적인 데이터 변수로 두지않고 객체로 만들어 그 상태에 따른 행동을 변경할 수 있도록 하는 패턴
- 전략 패턴(Strategy Pattern)
: 비슷한 객체들을 캡슐화하고 교환이 가능하도록 만든 패턴
- 템플릿 메소드 패턴(Template Method Pattern)
: 템플릿을 만들고 서브클래스에서 구체적으로 처리할 수 있도록 하는 패턴
- 방문자 패턴(Visitor Pattern)
: 데이터(또는 객체)의 구조와 처리기능을 분리할 수 있는 패턴
참고자료
GoF_Design_Pattern_Reference_Card.pdf
- Total
- Today
- Yesterday
- mac mariadb
- org.springframework.beans.factory.BeanDefinitionStoreException
- 데크
- mysql 세팅
- hash algorithm
- spring boot org.springframework.beans.factory.BeanDefinitionStoreException
- 큐
- 스프링 부트 시작 에러
- mac db설치
- Stack
- 해시알고리즘
- 스택
- mariadb 데이터타입
- 400 error
- mac mariadb 설치
- 자료구조
- mysql데이터타입
- mariadb데이터 타입
- springframewor
- Data Structure
- 400 badgateway
- spring boot 시작 에러
- mysql 데이터 타입
- mariadb
- HTTP
- hash알고리즘
- 알고리즘
- mysql데이터
- mariadb설치
- 스프링 부트 에러
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |