간단히 보는 소프트웨어 디자인 패턴(Software Design Pattern)
소프트웨어 디자인 패턴(Software Design Pattern)은 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제들에 대해 도입이 가능한 재사용(Reusable) 가능한 해결책이다. 개발 과정에서 마주치는 대부분의 문제들은 매우 높은 확률로 다른 개발자가 한 번쯤은 겪었을 문제이다. 매 번 똑같은 문제를 가지고 고민하는 것은 효율적이지 못한 일이다. 특수한 상황이 아니라면 하나의 문제에 대해서 깊게 고민하여 솔루션을 찾는 것보다는 당장 구글에 들어가서 다른 개발자들이 자신과 같은 문제를 겪은 적이 있는지, 같은 일을 겪었다면 어떻게 문제를 해결하였는 지 찾아보는 것이 훨씬 효율적이고, 더 개발자스러운 자세이기도 하다.
소프트웨어 디자인 패턴도 같은 맥락이다. 사실 소프트웨어를 구조적으로 디자인하는 것에 정답은 없고, 원한다면 개발자가 하나부터 열까지 세세하게 디자인하여 개발하는 것도 선택할 수 있다. 때로는 이러한 선택이 강요될 수도 있다는 것도 부정할 수 없다. 다만 대다수의 경우, 하나부터 열까지 소프트웨어를 디자인 하는 일은 매우 비효율적이다. 개발자가 원하는 소프트웨어는 다를지언정, 문제를 추상화하여 볼 경우, 이미 다른 개발자가 개발 과정 도중 겪었던 문제였고, 그 문제를 해결하기 위한 디자인도 이미 마련되어 인터넷 상에 떠돌 확률이 매우 높다. 소프트웨어 디자인 패턴은 개발자들이 겪었던 문제들 중에서도, 너무나도 많이 같은 문제가 발생한 나머지, 특정 상황에서는 이 디자인 패턴을 사용하면 문제가 해결된다는 하나의 공식으로 자리 잡은 것들이다.
디자인 패턴이 원래부터 있었던 개념은 아니다. 본래는 건축에서 시작해서 1987년, 켄트 벡과 워드 커닝햄이 프로그래밍, 구체적으로는 패턴 언어에 패턴을 적용하는 개념에 관한 실험을 시작했으며 그 해 OOPLSA 콘퍼런스에서 자신들의 결과를 제시하였다. 그 뒤 여러 해에 걸쳐 벡과 커닝햄 등은 이 작업을 계속 진행하였다.
디자인 패턴은 이른바 사인방(Gang of Four)이 쓴 Design Patterns: Elements of Reusable Object-Oriented Software라는 책이 1994년 출판된 이후 인기를 끌었다.
디자인 패턴은 여러 분류로 그룹화되어 있다. 큰 분류로 생성 패턴(Creational Pattern), 구조 패턴(Structural Pattern), 행동 패턴(Behavioral Pattern)이 있다. 생성 패턴은 객체의 생성과 관련된 패턴으로 객체의 생성 절차를 추상화 한다. 구조 패턴은 클래스 또는 객체들을 조합하여 더 큰 객체를 생성하는 패턴이다. 행동 패턴은 객체 또는 클래스의 책임 분배에 대한 클래스로 각 클래스 또는 객체 사이의 결합도를 최소화하는 역할을 한다.
다음 글부터는 생성 패턴, 구조 패턴, 행동 패턴에 대해서 각각 1 편씩 자세하게 다루어보고자 한다. 각각의 패턴의 정의가 무엇인지, 특징이 무엇인지, 카테고리에 속하는 패턴들에 무엇이 있는지를 다룰 예정이다. 이 글이 도움이 되었기를 바라며 글을 여기서 마친다.
소프트웨어 디자인 패턴 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 소프트웨어 디자인 패턴(software design pattern)은 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결
ko.wikipedia.org
https://velog.io/@ha0kim/Design-Pattern-%ED%96%89%EB%8F%99-%ED%8C%A8%ED%84%B4Behavioral-Patterns
Design Pattern : 행동 패턴(Behavioral Patterns)
객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴이다. 한 객체가 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하며 객체 사이의 결합도 최소화에 중점을 둔다.패턴을 주로
velog.io
https://velog.io/@ha0kim/Design-Pattern-%EA%B5%AC%EC%A1%B0-%ED%8C%A8%ED%84%B4Structural-Patterns
Design Pattern : 구조 패턴(Structural Patterns)
구조패턴(structural patterns)은 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴이다. 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶
velog.io
https://velog.io/@ha0kim/Design-Pattern-%EC%83%9D%EC%84%B1-%ED%8C%A8%ED%84%B4Creational-Patterns
Design Pattern : 생성 패턴(Creational Patterns)
생성패턴은 객체의 생성방식을 결정하는 패턴으로 객체의 생성절차를 추상화하는 패턴이다.객체를 생성-합성하는 방법 / 객체의 표현방법과 시스템을 분리한다.생성패턴은 시스템이 어떤 구체
velog.io