1. 디자인 패턴
설계 패턴을 정형화하여 유형별로 가장 최적의 방법으로 개발을 할 수 있도록 정해둔 설계 알고리즘과 유사
명확하게 답이 있는 형태가 아님 -> 프로젝트의 맞춰 적용 가능
2. Gof 디자인 패턴
GOF(Gang of Four)의 디자인 패턴
객체지향 개념에 따른 설계 중 재사용할 경우 유용한 설계를 디자인 패턴을 정리해둔 것
-> 잘 활용하면 경험이 부족하더라도 좋은 소프트웨어 설계 가능
- 디자인 패턴의 장점
- 개발자(설계자)간의 원활한 소통
- 소프트웨어 구조 파악 용이
- 재사용을 통한 개발 시간 단축
- 설계 변경 요청에 대한 유연한 대처
- 디자인 패턴의 단점
- 객체지향 설계/구현
- 초기 투자 비용 부담
3. 생성 패턴
- 객체를 생성하는 것과 관련된 패턴
- 객체의 생성과 변경이 전체 시스템에 미치는 영향 최소화
- 코드의 유연성을 높임
- Factory Method
- Singleton
- 어떠한 클래스(객체)가 유일하게 1개만 존재할 때 사용
- 서로 자원을 공유할 때 주로 사용, 실물 세계에서 프린터에 해당
- 프로그래밍에서 TCP Socket통신에서 서버와 연결된 connect 객체에 주로 사용
- Prototype
- Builder
- Abstract Factory
- Chaining
4. 구조 패턴
- 프로그램 내의 자료구조나 인터페이스 구조등 프로그램 구조를 설계하는데 활용될 수 있는 패턴
- 클래스, 객체들의 구성을 통해서 더 큰 구조를 만들 수 있게 해줌
- 큰 규모의 시스템에서 많은 클래스들은 서로 의존성을 가짐 -> 이러한 구조를 개발하기 쉽게 만들어 줌 , 유지 보수하기 쉬움
- Adapter
- ex) 실생활에서 110v와 220v로 변경해주는 변환기
- SOLID에서 개방폐쇄원칙(OCP)를 따른다
- 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용
- Composite
- Bridge
- Decorator
- 클래스는 유지하되, 이후 필요한 형태로 꾸밀 때 사용
- 확장이 필요한 경우 상속의 대안으로 활용
- SOLID 중에서 개방폐쇄원칙(OCP)와 의존역전원칙(DIP)을 따름
- Facade
- 여러 개의 객체와 실제 사용하는 서브 객체의 사이에 복잡한 의존관계가 있을 때 중간에 facade라는 객체를 두고 여기서 제공하는 interface만을 활용하여 기능을 사용하는 방식
- Facade는 자신이 가지고 잇는 각 클래스의 기능을 정확히 알아야 한다.
- Flyweight
- Proxy
- Proxy는 대리인, 뭔가를 대신해서 처리하는 것
- Proxy Class를 통해서 대신 전달하는 형태로 설계 -> 실제 Client Proxy로 부터 결과를 받는다.
- Cache의 기능으로도 활용이 가능
- SOLID중에서 개방폐쇄원칙(OCP)와 의존 역전 원칙(DIP)를 따름
5. 행위 패턴
- 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것
- 행위 관련 패턴을 사용하여 독립적으로 일을 처리하고자 할 때 사용
- 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법 제공
- Template Method
- Interpreter
- Iterator
- Observer
- 관찰자 패턴은 변화가 일어났을 때 미리 등록된 다른 클래스에 통보해주는 패턴을 구현
- Strategy
- 전략 패턴으로 불림
- 유사한 행위를 캡슐화
- 객체의 행위를 바꾸고 싶은 경우 직접변경이 아닌 전략만 변경
- 개방폐쇄원칙(OCP)와 의존역전원칙(DIP) 따름
- 전략 메서드를 가진 전략 객체, 전략 객체를 사용하는 컨텍스트, 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트
- Visitor
- Chain of responsibility
- Command
- Mediator
- State
- Memento
(참고: fastcampus 한 번에 끝내는 Java/Spring 웹 개발 마스터)
'Back-end > Spring boot' 카테고리의 다른 글
11월 4주차 공부정리 (0) | 2022.11.27 |
---|---|
IOC, DI, ObjectMapper (0) | 2022.11.13 |
웹 개발 (0) | 2022.09.20 |
객체지향 (0) | 2022.09.15 |