문제

현실 세계에서 디자인 패턴의 침투는 무엇입니까?일상 업무에서 이를 사용합니까(동료들과 이를 적용하는 방법과 위치를 논의함) 아니면 학문적 개념에 더 가깝습니까?

그들은 실제로 당신의 직업에 실제 가치를 제공합니까?아니면 사람들이 똑똑해 보이려고 이야기하는 것일까요?

메모:이 질문에서는 다음과 같은 '단순한' 디자인 패턴을 무시합니다. 하나씩 일어나는 것.나는 당신이 활용할 수 있도록 코드를 설계하는 것에 대해 이야기하고 있습니다. 모델 뷰 컨트롤러, 등.

도움이 되었습니까?

해결책

잘 작성된 대규모 프로그램은 이름이 지정되거나 인식되지 않더라도 디자인 패턴을 사용합니다.그것이 바로 디자인 패턴입니다. 반복적이고 당연히 발생하다.보기 흉한 API와 인터페이스하는 경우 다음을 구현하게 될 것입니다. Facade 그것을 청소하기 위해.분리해야 하는 구성 요소 간에 메시징이 있는 경우 다음을 사용하여 찾을 수 있습니다. Observer.상호 교환 가능한 알고리즘이 여러 개 있는 경우 결국 다음을 사용하게 될 수 있습니다. Strategy.

디자인 패턴을 인식하고 보다 신속하게 깔끔한 솔루션으로 수렴할 가능성이 높기 때문에 디자인 패턴을 아는 것은 가치가 있습니다.그러나 당신이 그것들을 전혀 모른다고 해도 결국에는 그것들을 만들게 될 것입니다(당신이 괜찮은 프로그래머라면).

물론 현대 언어를 사용한다면 표준 라이브러리에 내장되어 있기 때문에 어떤 용도로든 사용해야 할 것입니다.

다른 팁

제 생각에는 질문은 다음과 같습니다."당신은 사용 디자인 패턴이요?"라는 질문만으로는 대답이 보편적으로 '예'이기 때문에 약간의 결함이 있습니다.

설명하자면, 우리 프로그래머와 디자이너는 모두 디자인 패턴을 사용합니다.우리는 항상 그것을 깨닫지 못합니다.진부하게 들리겠지만 패턴을 따르지 않고 패턴이 찾아옵니다.물건을 디자인하면 기존 패턴처럼 보일 수 있습니다. 그런 식으로 이름을 지정하면 모든 사람이 당신이 말하는 내용을 이해할 수 있고 디자인 결정의 근거는 더 강력해집니다. 구역질 전에.

저는 개인적으로 패턴을 커뮤니케이션 도구로 사용합니다.그게 다야.이는 디자인 솔루션도 아니고 모범 사례도 아니며 도구 상자에 들어 있는 도구도 아닙니다.

오해하지 마십시오. 초보자라면 패턴에 관한 책을 통해 다른 결함이 있는 디자인보다는 패턴을 "사용"하여 솔루션을 가장 잘 해결할 수 있는 방법을 알려줄 것입니다.아마도 연습을 통해 배울 것입니다.그러나 이것이 모든 상황을 해결하기 위해 해당 패턴이 필요하다는 의미는 아니라는 점을 깨달아야 합니다.모든 상황에는 여기저기서 대안을 생각해야 하고 완벽한 답이 없는 어려운 결정을 내려야 하는 특이한 점이 있습니다. 그건 설계.

그러나 안티패턴은 완전히 다른 클래스에 속합니다.당신은 실제로 원하다 에게 적극적으로 안티 패턴을 피하세요.이것이 바로 안티패턴(anti-pattern)이라는 이름이 논란의 여지가 있는 이유입니다.

원래 질문으로 돌아가려면:
"나는 디자인 패턴을 사용하는가?", 예!
"나는 디자인 패턴에 적극적으로 의지하는가?", 아니오.

예.디자인 패턴은 적절하게 사용하면 멋질 수 있습니다.말씀하신 대로 저는 현재 모든 웹 프로젝트에 MVC(Model-View-Controller)를 사용하고 있습니다.이는 웹 공간에서 매우 일반적인 패턴으로, 서버측 코드를 훨씬 더 깔끔하고 잘 조직화합니다.

그 외에도 유용할 수 있는 다른 패턴은 다음과 같습니다.

  • MVVM(모델-뷰-뷰모델):MVC와 유사한 패턴;WPF 및 Silverlight 애플리케이션에 사용됩니다.

  • 구성:개체의 계층 구조를 사용해야 하는 경우에 적합합니다.

  • 하나씩 일어나는 것:단일 인스턴스가 필요한 항목을 저장하기 위해 전역을 사용하는 것보다 더 우아합니다.언급한 대로 간단한 패턴이지만 용도가 있습니다.

디자인 패턴이 언어 기능의 부족 및/또는 언어의 결함을 강조할 수도 있다는 점은 주목할 가치가 있습니다.예를 들어, 반복자는 이제 최신 언어의 일부로 내장되어 있습니다.

일반적으로 디자인 패턴은 매우 유용하지만 모든 곳에 사용해서는 안 됩니다.귀하의 필요에 가장 적합한 곳입니다.

네, 노력하고 있어요.실제로 코드의 유지 관리 및 가독성에 도움이 됩니다.그러나 일반적으로 존재하지 않는 패턴으로 시스템을 강요함으로써 이를 남용하는 사람들이 있습니다.

나는 적용 가능한 패턴을 사용하려고 노력합니다.개발자가 단지 코드를 위해 디자인 패턴을 구현하는 것을 보는 것은 다소 슬픈 일이라고 생각합니다.하지만 올바른 작업을 위해서는 디자인 패턴이 매우 유용하고 강력할 수 있습니다.

"현실 세계"에서 사용되는 단순한 디자인 패턴을 넘어서는 많은 디자인 패턴이 있습니다.좋은 예 Stackoverflow는 Model View Controller Pattern을 사용합니다.저는 고용주를 위한 프로젝트에서 클래스 팩토리를 여러 번 사용해 왔으며, 이를 사용하여 이미 작성된 프로젝트도 많이 보았습니다.

모든 디자인 패턴이 사용되고 있다고 말하는 것은 아니지만 많은 디자인 패턴이 사용되고 있습니다.

예, 그렇습니다. 일반적으로 우리가 무언가를 디자인하기 시작했을 때 누군가가 그것이 기존 패턴과 유사하다는 것을 알아차릴 때 발생합니다.그런 다음 이를 살펴보고 이것이 목표 달성에 어떻게 도움이 되는지 확인합니다.

우리는 또한 문서화되지 않았지만 많은 디자인에서 나타나는 패턴을 사용합니다.

우리는 그것들을 많이 사용하지 않습니다.

예, 제가 매일 작업하는 코드베이스에서는 Factory, Chain of Responsibility, Command, Proxy, Visitor 및 Observer 등이 사용되고 있습니다.MVC에 관한 한 이 사이트는 꽤 잘 활용하고 있는 것 같은데, 개발자들이 MVC에서 좋은 점을 충분히 언급하지 못했습니다. 최신 팟캐스트.

예, 저는 잘 알려진 디자인 패턴을 많이 사용하지만 나중에 '이름이 지정된' 디자인 패턴을 사용한다는 것을 알게 된 일부 소프트웨어를 구축하게 됩니다.가장 우아하고 재사용 가능한 디자인을 '패턴'이라고 부를 수 있습니다.춤 동작과 많이 비슷해요.우리 모두는 왈츠와 2단계를 알고 있지만, 대부분이 알고 있지만 모든 사람이 '범프 앤 스쿠트'라는 이름을 갖고 있는 것은 아닙니다.

MVC는 매우 잘 알려져 있으므로 디자인 패턴을 꽤 많이 사용합니다.이제 Gang of Four 패턴에 대해 묻는다면 다른 관리자가 디자인과 코드에서 우리가 작업 중인 내용을 알 것이기 때문에 제가 사용하는 몇 가지 패턴이 있습니다.하지만 우리가 하는 일에 대해서는 상당히 모호한 몇 가지가 있으므로, 하나를 사용하면 패턴 사용의 모든 이점을 얻을 수 없습니다.

그렇습니다. 빠르고 효율적이고 일반적으로 수용되는 방식으로 소프트웨어 설계에 대해 이야기하는 방법을 제공하기 때문입니다.더 나은 맞춤형 솔루션을 제공할 수 있습니까? 예(일종)?

원래 GoF 패턴은 프로덕션 코드에서 추출되었으므로 이미 실제 사용 중인 패턴을 목록화했습니다.그것들은 순전히 또는 대부분 학술적인 것이 아닙니다.

MVC 패턴은 모델 로직을 분리하는 데 매우 유용하며, 큰 문제 없이 재사용하거나 작업할 수 있습니다.또한 클래스를 분리하는 데 도움이 되고 단위 테스트가 더 쉬워집니다.나는 그것에 대해 썼다 최근에 (예, 여기에 뻔뻔한 플러그가 있습니다 ...)

또한 최근에는 기본 클래스의 팩토리 패턴을 사용하여 즉시 필요한 적절한 DataContext 클래스를 생성하고 반환했습니다. 링크.

브리지는 서로 다른 두 가지 기술(예: 코코아와 루비 예를 들어 Mac에서는)

그러나 나는 패턴을 구현할 때마다 그 패턴에 대해 사전에 알고 있었기 때문이라는 것을 깨달았습니다.내 필요에 맞게 원래 패턴을 약간 수정해야 한다는 것을 알았기 때문에 일반적으로 몇 가지 추가 생각이 필요합니다.

당신은되지 않도록주의해야합니다 건축 우주 비행사!

그렇습니다. 디자인 패턴은 현실 세계에서 주로 사용되며, 나와 함께 일하는 많은 사람들이 매일 사용합니다.

내 생각에 디자인 패턴이 제공하는 가장 큰 가치는 소프트웨어 디자인을 다른 프로그래머에게 전달할 수 있는 보편적이고 높은 수준의 언어를 제공한다는 것입니다.

예를 들어, 새 클래스를 "일부 입력 기준 조합을 기반으로 여러 다른 클래스 중 하나를 생성하는 유틸리티"로 설명하는 대신 간단히 다음과 같이 말할 수 있습니다. "추상 공장" 그러면 모두가 당신이 말하는 내용을 즉시 이해합니다.

그렇습니다. 디자인 패턴이나 추상적인 패턴은 내 삶의 일부입니다. 내가 보는 곳에서 그것들이 보이기 시작합니다.그러므로 나는 그들에게 둘러싸여 있습니다.그러나 아시다시피 지식이 부족한 것은 위험한 일입니다.그러므로 나는 GoF 책을 읽어볼 것을 강력히 권한다.

디자인 패턴의 주요 문제 중 하나는 대부분의 개발자가 아이디어를 얻지 못하거나 믿지 않는다는 것입니다.그리고 대부분의 경우 그들은 변수, 루프 또는 스위치에 관해 논쟁합니다.그러나 나는 패턴 언어를 구사하지 못한다면 소프트웨어가 멀리 가지 못할 것이며 유지 관리의 악몽에 빠지게 될 것이라고 굳게 믿습니다.

아시다시피 안티패턴 역시 위험한 일이며 디자인 패턴에 대한 전문 지식이 거의 없을 때 발생합니다.그리고 안티 패턴을 리팩토링하는 것은 훨씬 더 어렵습니다.이 문제에 대한 추천 도서로는 "AntiPatterns:위기에 처한 소프트웨어, 아키텍처 및 프로젝트 리팩토링".

예.

우리는 현재 직장에서도 이를 사용하고 있습니다.COBOL 및 PL/I를 사용한 메인프레임 코딩.

지금까지 저는 Adapter, Visitor, Facade, Module, Observer 그리고 Composite 및 Iterator와 매우 유사한 것을 보았습니다.언어의 특성상 주로 구조적 패턴이 사용됩니다.또한, 이 제품을 사용하는 사람들이 의식적으로 그렇게 하는지 항상 확신할 수는 없습니다. :D

나는 절대적으로 디자인 패턴을 사용합니다.이 시점에서 나는 MVC를 디자인 패턴으로 당연하게 여깁니다.제가 이 기능을 사용하는 주된 이유는 제가 특정 문제에 직면한 첫 번째 사람이 아닐 가능성이 높다는 것을 알 만큼 겸손하기 때문입니다.나는 어떤 패턴을 사용할지 알고 코드를 시작하는 경우가 거의 없습니다.코드가 자연스럽게 기존 패턴으로 발전하는지 지속적으로 관찰합니다.

나도 아주 좋아해요 마틴 파울러의 엔터프라이즈 애플리케이션 아키텍처의 패턴.문제나 작업이 나타나면 관련 섹션(대부분 참고서)을 찾아 패턴에 대한 몇 가지 개요를 읽습니다.일반적인 문제와 기존 솔루션에 대해 더 나은 아이디어를 갖게 되면 다른 사람의 경험을 통해 내 코드가 취할 수 있는 장기적인 경로가 보이기 시작합니다.나는 결국 훨씬 더 나은 결정을 내립니다.

디자인 패턴은 확실히 나의 모든 "미래를 위한" 아이디어에서 큰 역할을 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top