SW/디자인 패턴

디자인 패턴 : 장점, 중요한 이유

얇은생각 2019. 3. 30. 12:30
반응형

디자인 패턴 : 장점, 중요한 이유



반복적인 디자인 문제를 해결하는 데 도움이 됩니다. 즉, 디자인 패턴은 문제를 스스로 해결하는 것이 아니라 우리가 문제를 해결하는 데 도움을 줍니다.



커뮤니케이션, 학습 및 향상된 통찰력

지난 10년 동안 디자인 패턴은 모든 개발자의 용어의 일부가 되었습니다. 의사소통에 정말 도움이 됩니다. 한 사람은 팀의 다른 개발자에게 "여기서 명령 패턴을 사용했습니다."라고 쉽게 말할 수 있고, 다른 개발자는 설계뿐만 아니라 그 배경의 근거를 쉽게 파악할 수 있습니다. 디자인 패턴은 프로젝트에 처음 참여했을 때 학습에 큰 도움이 됩니다. 또한 이를 통해 개발자는 애플리케이션 또는 타사 프레임워크에 대한 더 나은 통찰력을 얻을 수 있습니다.



시스템을 개체로 분해

Design의 어려운 점은 적절한 개체를 찾고 시스템을 분해하는 것입니다. 캡슐화, 세분화, 의존성, 유연성, 성능, 진화, 재사용 가능성 등을 고려해야 합니다. 이것은 많은 것들에 영향을 미칩니다. 종종 서로 상충되는 방식으로 말입니다. 디자인 패턴은 부족한 추상화를 식별하는 데 도움이 됩니다. 이러한 객체는 분석 또는 초기 설계 중에 거의 발견되지 않으며, 설계를 보다 유연하고 재사용할 수 있도록 하는 과정에서 나중에 발견됩니다.



개체 세분성 결정

제가 많은 어려움을 겪고 있는 한 가지는 적절한 추상성과 세분성을 찾는 것입니다. 디자인 패턴은 여러 가지 세분화된 수준의 개체를 만드는 데 유용합니다. 



객체 인터페이스 지정

올바른 인터페이스와 다양한 인터페이스 간의 관계를 식별하는 것은 한번의 작업이 아닙니다. 일반적으로 인터페이스의 올바른 구성을 식별하려면 여러 번 반복해야 합니다. 대부분의 경우 인터페이스를 잊어버리고 메서드 서명을 작성하는 것도 상당히 까다로울 수 있습니다. 디자인 패턴은 이 분야에서 정말 도움이 됩니다.



객체 구현 지정

객체를 어떻게 구현해야 할까요? 인터페이스를 고려할 때 그러한 유형의 여러 가지 구체적인 클래스가 있을 수 있으며 각 클래스는 매우 다르게 구현할 수 있습니다. 디자인 패턴은 구현(구체적 클래스)이 아닌 인터페이스(유형)에 프로그램과 같은 지침을 제공하며, 이로 인해 객체 지향 코드가 매우 우수할 수 있습니다.



올바른 재사용 메커니즘 보장

상속 사용 시기, 구성 사용 시기, 매개 변수 유형을 사용할 때는 언제입니까? 이러한 맥락에서 delegation은 올바른 설계 결정인가요? 재사용 가능하고 유지 관리가 가능한 코드를 설계하려고 할 때 프로그래머에게 떠오르는 다양한 질문들이 있습니다. 디자인 패턴에 대한 지식은 그러한 결정을 내릴 때 정말 유용할 수 있습니다.



런타임 및 컴파일 시간 구조 관련

객체 지향 프로그램의 런타임 구조는 종종 코드 구조와 거의 유사하지 않습니다. 때때로 코드를 보는 것이 런타임 구조에 대한 통찰력을 제공하지 못합니다. 디자인 패턴에 대한 지식은 숨겨진 구조의 일부를 명백하게 만들어 줄 수 있습니다.



변화를 위한 설계

변화를 고려하지 않는 지속적인 리팩터링과 설계의 부족은 미래에 중대한 재설계를 할 위험이 있다는 것을 의미합니다. 큰 초기 설계가 소프트웨어 요구 사항의 끊임없는 변경/추가에 맞설 수 없다는 사실도 알 수 있습니다. 유사한 수명 주기를 가진 요소들을 훨씬 더 유연하고 확장 가능한 설계에서 함께 그룹화합니다. 어떤 행동의 요소가 가장 변화할 가능성이 높다고 생각한다면, 그 행동을 한 곳에서 추상화합니다. 이러한 개념의 디자인 패턴을 이해하고, 시스템을 설계하는 것은 실제로 가능합니다. 각 디자인 패턴은 시스템 구조의 일부 측면이 다른 측면과 독립적으로 변화하도록 지원하므로 강력한 시스템을 구축할 수 있습니다.

반응형