Back-end/Spring boot

디자인 패턴

메델 2022. 9. 17. 06:38

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