본문 바로가기
Study/디자인 패턴

[C#/Unity][디자인패턴] 디자인 패턴(Design Pattern) 알아보기

by 스테디코디스트 2023. 11. 7.
반응형

1. 디자인 패턴이란?

- 설계자로 하여금 재사용이 가능한 설계를 선택하고, 재사용을 방해하는 설계를 배제하도록 도와줌

- 시스템의 유지보수나 문서화를 개선할 수 있고, 클래스의 명세도 정확하게 알 수 있으며, 객체 간의 상호작용 또는 설계의도까지 명확하게 정의할 수 있음.

- 즉, "올바른" 설계를 "빨리" 만들 수 있도록 도와줌.

- 같은 실수를 반복하지 않기 위해 특정 상황에서 발생하는 문제 패턴을 발견하고 해결방안을 기록한 것

- 효율적인 코드를 만들기 위한 방법론

 

2. 디자인 패턴의 종류

1) 생성 패턴

- 객체의 생성과 초기화를 다룸

- 객체를 만드는 방법에 대한 패턴

 

2) 구조 패턴

- 객체와 클래스를 조합해 더 큰 구조를 만드는 방법을 다룸

- 객체들의 구성이나 클래스들의 구성을 다루는 패턴

 

3) 행동 패턴

- 객체나 클래스 사이의 알고리즘, 역할, 책임, 상태 등을 다룸

- 객체들 사이의 상호작용을 다루는 패턴

 

생성 패턴(Creational Pattern) 구조 패턴(Structural Pattern) 행동 패턴(Behavioral Pattern)
Singleton Adapter Command
Factory Method Composite Interpreter
Abstract Factory Decorator Iterator
Builder Facade Mediator
Prototype Flyweight Memento
  Proxy Observer
  Bridge State
    Strategy
    Template Method
    Chain
    Visitor

 

 

3. 디자인 패턴의 장점

1) 재사용성

- 검증된 해결책을 제공하므로 반복된 문제에 대한 해결책을 개발할 필요 없음

 

2) 유지 보수성

- 코드의 구조를 개선하여 유지 보수가 쉬워짐

- 특정한 목적에 맞게 각 패턴이 설계되어, 코드가 더 구조화되며 변경이 쉬워지고 가독성이 향상된다.

 

3) 유연성

- 코드의 구조를 개선하고 더 효율적으로 만들어주어 코드의 유연성이 높아짐

- 새로운 요구사항이나 변경사항에 대한 대응력을 높이고, 코드 변경에 다른 부작용을 최소화 할 수 있음.

 

4) 성능향상

- 반복적인 코드 작성을 최소화하여 성능을 향상시킴

- 패턴을 사용하여 중복 코드가 감소하고, 재사용성이 높아져 더 효율적인 코드가 됨

 

5) 표준화

- 비공식적으로 개발자들 간의 공통된 언어를 제공

- 개발 프로세스에서의 의사소통과 협업을 더 쉽게 해주고, 전체 sw 개발 산업에서의 일관성을 유지하는데 도움이 됨.

 

4. 디자인 패턴의 단점

1) 복잡성

- 패턴을 일반적으로 다른 클래스와 객체와의 상호작용을 추가하므로 클래스 간의 관계가 더 복잡해질 수 있음.

 

2) 오용

- 간단한 문제를 복잡하게 해결하려 시도할 수 있음.

- 프로그램의 효율성을 저하시키고 유지보수를 어렵게 함.

 

3) 부적절한 적용

- 잘못된 디자인 패턴을 적용하면 문제가 더 복잡해질 수 있음.

- 각 패턴이 해결하려는 문젝와 일치하지 않는 다른 문제에 적용하면 예상치 못한 결과가 발생할 수 있음.

 

4) 추가 비용

- 일반적으로 디자인 패턴으로 구현시 코드 복잡성이 증가하고, 더 많은 시간과 노력이 필요함.

 


5. 참고 사이트

https://readystory.tistory.com/114

 

디자인 패턴(Design Pattern)이란?

객체지향 소프트웨어를 '잘' 설계한다는 것은 쉬운 일이 아닙니다. 게다가, 재사용할 수 있는 객체지향 소프트웨어를 만드는 것은 더 힘듭니다. 설계를 할 때에는 지금 당장 갖고 있는 문제를 해

readystory.tistory.com

https://todamfather.tistory.com/86

 

[Design Pattern] 디자인 패턴 이란?

디자인 패턴이란? 소프트웨어 개발에서 디자인 패턴은 특정한 상황에서 자주 발생하는 문제를 해결하기 위해 솔루션을 제공하는 디자인의 재사용 가능한 템플릿입니다. 디자인 패턴은 소프트

todamfather.tistory.com