HereWeGo(pattern)

진명재·2024년 1월 29일
0

HereWeGo!(Architecture)

목록 보기
2/3

오늘은 세가지 패턴들에 대해 알아보겠다

생성 패턴

말그대로 객체를 생성하는데 사용되는 패턴이다. 해당 패턴을 사용하여 구체적인 클래스를 사용하는지를 캡슐화 한다.
즉, 생성패턴을 사용하여 객체를 생성되거나 변경 되어도 프로그램 구조에 영향을 받지 않도록 유연성을 제공 한다. 이것이 생성 패턴의 가장 큰 특징이다. (이는 앞선 블로그에서 알아보았던 디자인패턴의 목적인 유연성인 것이다.)

생성 패턴 종류

  1. 추상 팩토리 패턴
    관련 객체들의 구상 클래스들을 지정하지 않고도 관련 객체들의 모음을 생성할 수 있도록 하는 생성패턴이다.
  2. 빌더 패턴
    복잡한 객체들을 단계별로 생성할 수 있도록 하는 생성 디자인 패턴이다. 이 패턴을 사용하면 같은 제작 코드를 사용하여 객체의 다양한 유형들과 표현을 제작할 수 있다.
  3. 팩토리 메서드 패턴
    부모 클래스에서 객체들을 생성할 수 있는 인터페이스를 제공하지만, 자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 하는 생성 패턴이다.
  4. 프로토 타입 패턴
    코드를 그들의 클래스들에 의존시키지 않고 기존 객체들을 복사할 수 있도록 하는 생성 디자인 패턴입니다.
  5. 싱글턴 패턴
    클래스에 인스턴스가 하나만 있도록 하면서 이 인스턴스에 대한 전역 접근(액세스) 지점을 제공하는 생성 디자인 패턴입니다

출처 - 디자인 패턴 뛰어들기

구조 패턴

구조패턴(structural patterns)은 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴이다. 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운 기능을 제공하는 패턴이다.

즉, 개체간의 관계를 실현 할 수 있는 간단한 방법으로써 설계를 용이하게 하는 패턴이라고 볼 수 있다.

구조패턴 종류

  1. 어댑터(Adapter)
    특정클래스의 interfacd를 다른 interface로 변환하여 사용 할 수 있도록 해준다.
    즉, 호환되지 않은 두타입의 관계의 연결을 제공 시킽다. ex) 섭씨온도 화씨온도, m km 등
  2. 브릿지(Bridge)
    브릿지 패턴은 구현 뿐 아니라 추상화 부분까지 변경 시켜야하는 경우에 사용할 수 있도록 해준다. 브릿지 패턴을 사용하면, 구현을 인터페이스에 결합시키지 않기에, 구현과 추상화된 부분을 분리 시킬 수 있는 장점이 있으며, 추상화된 부분을 구현한 클래스를 변화 시켜도 클라이언트에는 영향을 끼치지 않는다.
  3. 합성(Composite)
    객체를 component와 composite으로 구성하여 트리 구조로 구성하여 표현하는 패턴이다. 사용자가 단일 객체와 복합 객체 모두 동일하게 다루게 한다. 즉, 0개 이상의 유사한 객체를 구성하여 하나의 객체로 만들어 조작할 수 있도록 한다.
  4. Decorator
    기존 코드를 변경하지 않고 부가 기능을 동적으로 유연하게 추가하기 위해 특수 래퍼(wrapper) 객체 안에 객체를 배치하는 구조적 디자인 패턴
  5. Façade 패턴
    복잡한 코드를 단순한 인터페이스로 제공하기 위해 공통 기능을 정의하는 단순화된 상위 수준의 인터페이스를 정의하는 구조적 디자인 패턴

밑에 블로그에서 구조패턴에 대한 자세한 기능 설명을 하고있기에, 참고 하면 도움이 될 것 같다!!

출처 - 도리님

행동 패턴

객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴이다.
한 객체가 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하며 객체 사이의 결합도 최소화에 중점을 둔다.

행동 패턴은 알고리즘과 객체 간 책임 할당과 관련이 있습니다. 행동 패턴은 객체와 클래스의 패턴뿐만 아니고 객체, 클래스 간에 의사소통 패턴도 설명하는데요, 이러한 패턴은 런타임에서 처리하기 어려운 복잡한 control flow들이라는 특징을 갖습니다. 이렇게 행동 패턴을 사용해서 개발자가 control flow보다는 객체가 연결되는 방식에 집중할 수 있도록 해줍니다.

행동패턴 종류

  1. Interpreter 패턴
    자주 등장하는 문제를 간단한 언어의 문법으로 정의하고 해석하여 재사용하는 행동 디자인 패턴
    – 자주 등장하는 패턴을 문법/언어로 정의
    – 기존 코드 변경없이 새로운 표현 생성
  2. Template method 패턴
    상위 클래스에서 처리의 뼈대를 결정하고 하위 클래스에서 구체적인 내용을 결정하는 행동 디자인 패턴
    – 구체적으로 처리할 클래스의 템플릿 제공
    – 추상 메소드의 공통 알고리즘을 재사용
  3. Chain of Responsibility 패턴
    객체 간 결합을 느슨하게 하기 위해 클라이언트로부터의 요청을 처리할 수 있는 처리 객체를 집합(Chain)으로 만들어 부여하는 행동 디자인 패턴
    – 객체 간 연계를 통해 처리 가능 객체 결정
    – 객체 간 결합도를 낮추어 독립적으로 수행
  4. Command 패턴
    요청을 요청에 대한 모든 정보가 포함된 독립실행형 객체로 변환하여 명령 객체 필요에 따라 처리하는 행동 디자인 패턴
    – 실행 기능 캡슐화로 여러 기능 실행 재사용성 확보
    – 기능 수정/변경 시 클래스만 정의하여 유연한 확장성 제공

마찬가지로 밑에 블로그에서 행동패턴에 대한 자세한 기능 설명을 하고있기에, 참고 하면 도움이 될 것 같다!!

출처- 도리님

profile
하고싶은게 많은 대학생입니다 :)

0개의 댓글