본문 바로가기
CS note/디자인 패턴, 프로그래밍 패러다임

디자인 패턴 및 프로그래밍 패러다임

by 코드 이야기 2023. 1. 20.
728x90

 

디자인 패턴이 생겨난 이유와 장점

개발을 하다보면 이전에 사용했던 이전의 코드를 들여다보는 경험을 종종 하게 됩니다.

그러다 전에 사용했던 코드(해결책)을 그대로 복붙하기도 하고, 변형해서 쓰기도 하고,

혹은 상황에 맞지 않다고 판단하여 다른 방향의 구현을 고민하기도 합니다.

 

디자인 패턴은 재사용이 가능한 설계를 하도록 돕습니다.

따라서 클래스의 명세, 객체 간의 상호작용, 유지보수, 문서화 등을 개선할 수 있습니다.

 

 

 

디자인 패턴

프로그램을 설계할 때 발생했던 문제점들을
객체 간의 상호 관계 등을 이용하여 해결할 수 있도록
'규약' 형태로 만들어둔 것
즉, 일종의 솔루션

 

아키텍처 패턴

  • MVC : Model / View / Controller의 기능을 수행하는 계층으로 나누어 관리하는 방법.
  • MVP 
  • MVVM 

 

GOF의 디자인 패턴

  • Creational Pattern (생성 패턴) : 객체의 생성에 관련된 패턴
    • Singleton (싱글톤) : 하나의 클래스 하나의 인스턴스만 가지는 패턴
    • Factory (팩토리) : 상위 클래스에서 중요 기능을 추상화한 후, 하위 클래스에서 구체적 내용을 결정하는 패턴
    • Builder (빌더) 
    • Prototype (프로토타입)
  • Structural Pattern (구조 패턴) : 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
    • Adapter (어댑터)
    • Composite (컴포지트)
    • Decorator (데코레이터)
    • Facade (퍼사드)
    • Flyweight (플라이웨이트)
    • Proxy (프록시)
  • Behavioral Pattern (행동 패턴) : 객체 간의 상호작용에 관련된 패턴
    • Command (커맨드)
    • Interpreter (인터프리터)
    • Iterator (이터레이터)
    • Mediator (중재자)
    • Memento (메멘토)
    • Observer (옵저버)
    • State (상태)
    • Strategy (전략) : 객체들의 공통 행위를 인터페이스로 묶어, 각 객체의 행위(전략)에 맞춰 변경하는 패턴
    • Template Method (템플릿 메서드)

 

그 외

  • revealing module pattern (노출모듈 패턴)

 

 

 

프로그래밍 패러다임

프로그래밍의 관점을 정의하는 개발 방법론

 

  • 선언형과 함수형 프로그래밍
  • 객체지향 프로그래밍 (OOP, Object-Oriented Programming): 객체와 객체간의 상호작용을 표현하는 방식.
  • 절차형 프로그래밍
  • 패러다임의 혼합
    항상 가장 좋은 프로그래밍 방법은 없기 때문에 상황(비즈니스 로직, 서비스 특성 등)에 따라 패러다임을 선택하는 것이 좋다.
    하나의 프로그래밍 패러다임으로 통일하는 방법도 있고, 상황별로 유리한 패러다임을 선택해 조합해 사용하는 방법도 있다.

 

 

 

 


참고

 

 

728x90

댓글