Software World 외부인에게 디자인 패턴을 설명하는 방법 부족하기 때문입니다. MVC, Singleton, Factory, Repository

조카에게 디자인 패턴을 설명하고 싶지만 항상 그렇게하는 데 어려움을 겪고 있습니다. 디자인 패턴에 대한 명확한 이해가 부족하기 때문입니다. MVC, Singleton, Factory, Repository 등과 같은 패턴을 10 세의 어린이조차도 이해할 수있는 간단한 용어로 설명하는 방법을 제안하십시오.

패턴을 이해하는 데 도움이되는 예제를 찾고 있습니다. 장난감, 영화, 음악 등이있는 예



답변

Wikipedia 기사 의 시작 은 아마도 좋은 시작 이라고 생각합니다 .

A design pattern is a general reusable solution to a commonly occurring problem.

아니면 특정 패턴의 세부 사항을 설명하고 싶습니까?


답변

설명하려는 이유에 따라 다릅니다. 패턴에 대한 아이디어를 설명하고 싶다면 A Pattern Language의 아키텍처 예제를 사용합니다. 이 연구자들은 건물이나 방의 특정 측면으로 인해 사람들이 전 세계의 다양한 문화, 건축 자재 및 다양한 종류의 이웃에서 그 건물이나 방에서 생활하거나 일하는 것을 즐겼습니다. 예를 들어 “양면 조명”과 같습니다. 두 개의 벽에 창문이있는 방은 하나가 있거나없는 방보다 훨씬 좋습니다. 소프트웨어에도 이와 같은 패턴이 있습니다. 다른 프로그래밍 언어를 사용하더라도 일부 패턴이 반복됩니다. 심지어 게임, 재무 계산을위한 것, Facebook 내부의 엔진 등 매우 다른 소프트웨어에서도 마찬가지입니다.

그런 다음 특정 패턴에 대해 이야기하고 싶다면 (왜 그런지, 10 살짜리까지) 어떻게 작동하는지 설명하기 전에 그 패턴이 어디에 사용되는지에 대한 예를들 수 있습니다. 따라서 컴포지트를 사용하면 컨테이너의 무게와 모든 컨테이너의 총계 및 보유한 물건을 합산하여 여행 가방의 무게를 알아낼 때 명시적인 재귀를 피할 수 있지만 회사의 급여 부담을 계산하는 데에도 효과적입니다. 또는 제조 단지의 용량. 그것이 열 살짜리에게 조금 흥미 롭다면 어떻게 작동하는지 설명 할 수 있습니다.


답변

디자인 패턴이 존재하기 때문에 일부 사람들은 소프트웨어가 서로 잘 작동 할 수있는 방법이 있다는 것을 깨달았고 통찰력을 공유하기를 원했기 때문에 존재합니다.

사람들의 그룹을 생각하는 것과 같은 방식으로 디자인 패턴을 생각할 수 있습니다. 예를 들어, 때때로 모든 회의를 용이하게하는 사람이 있습니다. 이는 객체 간의 상호 작용을 용이하게하는 컨트롤러 패턴과 같습니다.

또는 방 앞의 누군가가 사람들이 손을 올리는 것을 지켜보고 다른 사람이들을 수 있거나 응답하여 반응 할 수 있도록 질문을 반복하는 청중을 상상해보십시오. 이는 주제 / 관찰자 패턴과 유사합니다.

번역가 (어댑터 패턴), 경비원 (프록시), 현장 전문가 (싱가포르) 또는 자동차 점검중인 사람 (유효 기)과 같은 패턴이 있습니다.

객체와 사람의 차이점은 원하는만큼 많은 객체를 만들고 여러 사본을 가질 수 있다는 것입니다. 따라서 소프트웨어가 너무 복잡하지 않도록 개체의 책임을 이해하고, 책임을 작게 유지하고, 작업을 복제하지 않도록해야합니다. 전문가들은 이것에 대해 많은 경험을 가지고 있으며, 소프트웨어가 효과적으로 상호 작용하는 방식에 대한 이러한 패턴을 제공하여 우리가하려는 일에 가장 적합한 은유가 무엇인지 결정하고 가장 적절한 방식으로 협업 할 소프트웨어 조각.


답변

요리 기술이 식사 / 접시를 만드는 데 사용되는 것처럼 시스템의 개별 구성 요소를 만드는 데 사용된다고 말합니다. 감자, 고기 및 야채와 함께 저녁 식사를하고 있다고 상상해보십시오. 감자를 삶고 으깬 다음 고기를 굽고 야채를 찜하기로 결정합니다. 그릴 디자인 패턴을 사용하여 감자의 고기, 종기 및 매쉬 패턴을 요리하고 야채의 증기 패턴을 요리합니다.


답변

이러한 디자인 패턴의 대부분은 객체 지향 디자인의 일부입니다. OOD를 이해하지 못하는 사람에게는 실제로 설명 할 수 없습니다. 주어진 패턴으로 달성 한 목표를 설명 할 수는 있지만 어떻게 작동하는지 또는 왜 필요한지는 설명 할 수 없습니다. 물론 OOD 전체를 설명하지 않는 한.


답변

아키텍처에 대한 디자인 패턴이 먼저 설명되었습니다. 광장의 위치, 건물 및 기타 일반적으로 반복되는 레이아웃과 같은 것들. 거기서 시작할 수 있습니다. 정문과 같은 것은 거리, 방의 구석을 향한 문 및 기타 생각할 수있는 모든 것을 향합니다. 원래 저자의 패턴은 널리 사용되지 않았습니다. 그는 패턴 자체로는 충분하지 않다고 말한 것으로 알려졌다.

방 주위를 움직이는 것에 대해 토론하십시오. 의자를 문 앞에 놓으십시오. 창문이나 문을 다른 곳으로 옮기는 것이 합리적입니까? 그 이유는 무엇?

테이블에 장소를 설정하는 것과 같은 것을 시도하십시오. 크기에 따라 물건을 정리해보십시오. 정상적인 패턴이 아니며 작업하기가 어렵습니다. 정상적으로 설정하십시오. 주스의 빠른 유리에 적합한 레이아웃입니까? 패턴이 항상 적절한 것은 아닙니다.

우리는 항상 패턴으로 살아갑니다. 서너 권의 책을 가져 가서 책을 살펴보십시오. 레이아웃에는 분명한 패턴이 있습니다. 제목 페이지, 목차, 내용 및 색인. 모든 구성 요소가 필요한 것은 아니지만 구성 요소를 제자리에서 보는 것이 혼란 스러울 수 있습니다.


답변

디자인 패턴은 지그가 목공에 사용하는 소프트웨어 개발입니다. 대규모 프로젝트에서 잘 알려진 ‘잘라 내기’를 수행 할 수있는 도구입니다.

컷을 만들기 위해 지그가 필요 하지 않으므로 일부 상황에서는 더 쉽습니다.