유니티 디자인 패턴에 대해서

디자인 패턴이란?

디자인패턴이란 개발할 때 자주 발생하는 문제에 대한 해결책이자, 효율적이고 유연한 설계를 위한 가이드라인이라고 생각하면 됩니다. 과거 우리의 대선배님들이 직접 경험으로 쌓아온 노하우와 설계 원칙을 바탕으로 만들어졌다고 합니다.

 

디자인패턴은 특정 문제 상황에 대한 해결 방법을 제시하고, 재사용 가능한 형태로 만들어 설계에 적용할 수 있게 해줍니다. 이를 통해 유지보수성, 확장성, 재사용성을 향상시키고, 일관된 개발 방법론을 제공한다는 장점이 있습니다.

 

디자인 패턴은 보통 다음과 같은 구성 요소로 이루어져 있습니다.

  1. 문제 (Problem): 디자인 패턴이 적용될 문제나 상황을 정의합니다.
  2. 해결책 (Solution): 문제를 해결하기 위한 구체적인 설계 방법이나 패턴을 제시합니다.
  3. 결과 (Consequences): 해당 패턴을 적용함으로써 얻을 수 있는 장점과 단점을 분석합니다.

문제 (Problem)

여러 곳에서 접근 가능한 하나의 공유된 객체를 유지하고 싶을 때, 해당 객체의 인스턴스를 여러 번 생성하지 않고 단 하나의 인스턴스만 생성하고 공유하고 싶은 경우

 

해결책 (Solution)

싱글톤 패턴은 해당 클래스의 인스턴스가 오직 하나만 생성되도록 보장하며, 어디서든 해당 인스턴스에 접근할 수 있는 전역적인 접근점을 제공함

 

결과 (Consequences)

싱글톤 패턴을 적용하면 다음과 같은 장점과 단점이 있습니다.

 

 

장점:

  1. 메모리를 절약할 수 있습니다. 하나의 인스턴스만 생성되므로 메모리 낭비를 줄일 수 있습니다.
  2. 전역적인 접근점을 제공하여 어디서든 해당 인스턴스에 접근할 수 있습니다.

단점:

  1. 다중 스레드 환경에서 안전성을 보장하기 위한 추가적인 처리가 필요합니다.
  2. 의존성을 높이고 테스트하기 어려울 수 있습니다.

 

디자인 패턴은 코드의 구조, 관계, 행위를 나타나개 위해 사용됩니다. 디자인 패턴을 사용하면 개발자들 사이에서 공통된 언어를 제공하고, 설계 결정을 이해하고 커뮤니케이션하는 데 도움이 됩니다.

 

디자인 패턴에는 여러가지 패턴들이 존재하며, 각각의 패턴은 특정 상황에 적합하므로 상황에 맞게 사용하면 됩니다.


디자인 패턴 종류

 

디자인 패턴은 크게 생성 패턴, 구조 패턴, 행동 패턴으로 분류됩니다. 

 


생성 패턴 (Creational Patterns)

생성 패턴은 객체의 생성 메커니즘에 관한 패턴입니다. 생성 패턴들은 객체 생성 과정을 추상화하고, 시스템이 어떻게 객체를 생성하고 조립하는지를 다양한 방법으로 처리합니다.

 

대표적인 생성 패턴

  • 팩토리 메서드 (Factory Method)
  • 추상 팩토리 (Abstract Factory)
  • 빌더 (Builder)
  • 싱글톤 (Singleton)
  • 프로토타입 (Prototype)

구조 패턴 (Structural Patterns)

구조 패턴은 클래스나 객체를 더 큰 구조로 합치는 방법을 다루는 패턴입니다. 구조 패턴들은 클래스와 객체를 더 큰 구조로 합치는 방법을 제공하여 시스템을 더 유연하게 만듭니다.

 

대표적인 구조 패턴

  • 어댑터 (Adapter)
  • 브리지 (Bridge)
  • 컴퍼지트 (Composite)
  • 데코레이터 (Decorator)
  • 퍼사드 (Facade)
  • 플라이웨이트 (Flyweight)
  • 프록시 (Proxy)

행동 패턴 (Behavioral Patterns)

행동 패턴은 시스템의 객체 간의 상호 작용과 책임을 분산하는 방법을 다루는 패턴입니다. 행동 패턴들은 객체 간의 효율적인 의사 소통을 가능하게 하며, 시스템의 유연성과 효율성을 향상시킵니다.

 

대표적인 행동 패턴

  • 책임 연쇄 (Chain of Responsibility)
  • 커맨드 (Command)
  • 인터프리터 (Interpreter)
  • 반복자 (Iterator)
  • 중재자 (Mediator)
  • 메멘토 (Memento)
  • 옵저버 (Observer)
  • 상태 (State)
  • 전략 (Strategy)
  • 템플릿 메서드 (Template Method)
  • 방문자 (Visitor)