어떤 디자인 패턴을 사용해야합니까? [닫은]


104

나는 디자인 패턴을 매우 좋아하지만 언제 적용 할 수 있는지보기가 어렵다. 디자인 패턴을 설명하는 웹 사이트를 많이 읽었습니다. 나는 그것들의 대부분을 이해하지만, 내 상황에서 패턴을 인식하기가 어렵다는 것을 느낀다.

그래서 제가이 질문을하는 것입니다. 어떤 디자인 패턴을 사용할 때 지침 / 경보 벨이 있습니까?

예를 들어, 생성해야하는 객체를 결정하기 위해 switch 문을 수행하는 경우 팩토리 디자인 패턴을 사용할 수 있습니다. 따라서이 경우 switch 문은 Factory 패턴을 사용하기위한 '알람 벨'입니다.

그렇다면 디자인 패턴을 결정하기 위해 더 많은 '알람 벨'을 알고 있습니까?


6
일반적으로 내가 보는 패턴 설명에는 해당 디자인 패턴을 원하는 상황에 대한 설명이 포함됩니다.
R. Martinho Fernandes

답변:


99

일반적으로 프로세스는 반대입니다. 디자인 패턴을 사용할 상황을 찾지 말고 최적화 할 수있는 코드를 찾으십시오. 올바르게 구조화되지 않은 것으로 생각되는 코드가있을 때. 문제를 해결할 디자인 패턴을 찾으십시오.

디자인 패턴은 구조적 문제를 해결하는 데 도움이됩니다. 디자인 패턴을 사용할 수 있도록 응용 프로그램을 디자인하지 마십시오.


23
구조적 문제뿐만 아니라 행동 및 창조 문제도 있습니다.
DevDemon

1
디자인 패턴은 테스트되고 입증 된 개발 패러다임을 제공하여 개발 프로세스의 속도를 높일 수 있습니다. 효과적인 소프트웨어 설계에는 구현 후반까지 가시화되지 않을 수있는 문제를 고려해야합니다. 디자인 패턴을 재사용하면 주요 문제를 유발할 수있는 미묘한 문제를 방지하고 패턴에 익숙한 코더 및 아키텍트의 코드 가독성을 높일 수 있습니다.
SaddamBinSyed

5

그것들을 배우고 천천히 당신은 그것들을 언제 사용할지 재구성하고 알아낼 수있을 것입니다. 싱글 톤 패턴과 같은 간단한 것으로 시작하십시오. :)

하나의 개체 인스턴스를 만들고 하나만 만들려는 경우. 싱글 톤 패턴을 사용합니다. 옵션 객체를 사용하여 프로그램을 만들고 있다고 가정 해 보겠습니다. 당신은 그 중 몇 가지를 원하지 않습니다. Singleton은 하나 이상이 없도록합니다. 싱글 톤 패턴은 간단하고 많이 사용되며 정말 효과적입니다.


17
싱글 톤은 실제로 하나의 인스턴스 만 필요한 경우에는 적합하지 않습니다 . Singleton은 하나의 인스턴스 로 제한 해야 할 때 사용됩니다 . 이 때 하나 개의 필요 인스턴스를, 당신은 단순히 하나의 인스턴스를 생성하고 사용 시도 할 수 있습니다.
R. Martinho Fernandes

또한 싱글 톤은 어떤 곳에서는 매우 유용하고 필요하지만, 필요하지 않을 때 구현하기 매우 쉬운 패턴이기도합니다. 여기에서 힌트하고 Fernandes가 지적했듯이 아마도 필요하지 않을 것입니다. 사실, 싱글 톤 패턴 사용은 가능한 (아마도) 코드 냄새의 좋은 신호입니다. 서비스 클래스에 사용하는 것은 코드 냄새 일 가능성이 높습니다. 싱글 톤이 아닌 DI가 필요한 것 같습니다. 어떤 사람들은 그런 식으로 사용합니다. 특히 작은 (중요하지 않은) 코드 또는 POC의 경우. 그러나 내가 말했듯이 효과적인 용도가 있습니다. 쉽게 할 수있는 방법을 찾지 말고 그냥하세요.
Suamere 2014

4

@Peter Rasmussen에 전적으로 동의합니다.

디자인 패턴은 일반적으로 발생하는 디자인 문제에 대한 일반적인 솔루션을 제공합니다.

아래 접근 방식을 따르시기 바랍니다.

  1. 각 패턴의 의도 이해
  2. 각 패턴의 체크리스트 또는 사용 사례 이해
  3. 문제에 대한 해결책을 생각하고 해결책이 특정 패턴의 체크리스트에 포함되는지 확인하십시오.
  4. 그렇지 않다면 디자인 패턴을 무시하고 자신의 솔루션을 작성하십시오.

유용한 링크:

sourcemaking : C ++ 및 Java를 포함한 여러 언어로 의도 , 구조체크리스트를 아름답게 설명합니다.

wikipedia : C # 및 Java를 포함한 여러 언어로 된 구조, UML 다이어그램 및 작업 예제를 설명합니다.

소스 메이킹 디자인 패턴체크리스트 경험 규칙은 사용자가 찾고있는 알람 벨을 제공합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.