디자인 패턴 1

WestCoast·2021년 9월 24일
0

디자인 패턴

목록 보기
2/2

들어가기 전에


이 글은 어디까지나 디자인 패턴을 공부함에 있어 유용한 정보들을 정리해놓은 글이며, 아래 패턴 분류들에는 모두 디자인 패턴을 공부하면서 이해하기 쉽다고 생각한 글들의 링크를 걸어두었음.

디자인 패턴은 이 글에 있는 것이 전부가 아니며, 상당히 종류가 많으므로 적재적소에 필요한 디자인패턴을 적용하는 능력이 중요하다고 생각함.

1. 생성 패턴


팩토리 메소드 패턴

  • 요약

    몬스터 공장이라는 인터페이스(몬스터 타입, 이름, hp 등의 서브 클래스가 구현해야 할 정보만 가지고 있음)가 있고, 서브 클래스에서 고블린, 오크 등의 실제 제작(타입: 고블린, hp=100 등)을 한다.

싱글톤 패턴

  • 요약

    게임 내내 존재할 플레이어 캐릭터를 오직 하나만 만들어질 수 있도록 보장함. 인스턴스는 private으로 선언하지만, public 메소드를 통해 전역적으로 접근 가능.(보통 static으로 선언하여 삭제하기 전까지 계속 상주한다.)

  • 유니티 C# 싱글턴 패턴 + Lazy를 이용한 버전

2. 구조 패턴


어댑터 패턴

  • 요약

    2개의 서로 호환되지 않는 인터페이스 사이에 새로운 클래스를 만들어서 연결되도록 함.

  • ex)

    핸드폰 케이블의 5핀과 c타입 사이에 호환이 가능하게 해줄 어댑터. 5핀 케이블을 c타입에 연결하자고 5핀 케이블을 뜯어 고치기보단 어댑터를 사이에 끼우는 게 더 편리함.

  • [자바 디자인 패턴 이해] 2강 어댑터 패턴(Adapter Pattern)

컴포지트 패턴

  • 요약

    트리 구조의 효율적인 사용.
  • ex)

    1) Graphic 인터페이스가 해야 할 일의 정보를 가지고 있음.
    2) Graphic 인터페이스를 받은 Ellipse 클래스가 실제로 구현을 함.
    3) Graphic 인터페이스를 받은 CompositGraphic 클래스는 추가, 삭제의 기능과 2의 구현 내용을 한 번에 처리하는 기능을 가짐.

3. 행위 패턴


커맨드 패턴

옵저버 패턴

스트래티지 패턴

  • 요약

    유닛 인터페이스가 있고, 전투기, 헬리콥터 클래스가 있고, 미사일, 총, 레이저 클래스가 있어서 쉽게 바꿔 낄 수 있도록 한다.

템플릿 메소드 패턴

  • 요약

    공통된 일은 템플릿 메소드에서 바로 구현, 하위 클래스에서 반드시 구현해야 하는 것은 abstract로 선언, 변경될 수도 있는 일은 훅 메소드로 구현.
    하위 메소드는 템플릿 메소드를 상속받고 abstract를 반드시 구현, 그 외 자신이 해야 할 일을 추가 구현, 훅 메소드는 선택적으로 변경.

  • 토비의 스프링3.1 - 템플릿 메소드 패턴, 팩토리 메소드 패턴

4. 그 외


컴포넌트 패턴

  • 요약

    회전, 이동을 하나의 클래스에서 구현하기보다는 기능 별로 분리해서 구현하게 되면, 향후에 이동 속도만 변경하게 되었을 때 쉽게 변경이 가능.

MVC 패턴

MVP 패턴

  • MVC 패턴의 파생
profile
게임... 만들지 않겠는가..

0개의 댓글