Development
디자인 패턴을 이용하는 방법 (1)
디자인 패턴은 객체지향 설계를 할 때 겪게 되는 문제들을 다양한 방법으로 해결해 줄 수 있는 좋은 수단이다. 이 포스팅에서는 문제를 해결하기 위해 디자인 패턴을 어떻게 이용하는지에 대해서 알아보고자 한다. 적당한 객체 찾기 객체지향 프로그램(OOP)은 당연하겠지만 객체로 만들어진다. 객체는 데이터와 이 데이터를 처리하는 Procedure를 함께 묶은 단위이다. Procedure는 흔히 우리가 메서드(Method) 또는 오퍼레이션(Operation)이라고 부르는 것들이다. 객체는 요청(Request) 받으면 오퍼레이션을 수행한다. 요청은 객체가 오퍼레이션을 실행하게 하는 유일한 방법이고, 오퍼레이션은 객체 내부의 데이터의 상태를 변경할 수 있는 유일한 방법이다. 이러한 접근의 제약 사항으로 객체의 내부 ..
디자인패턴의 조직화, 관계도
** 이 블로그에서 작성하는 디자인 패턴의 포스팅은 GoF의 디자인패턴 서적을 참고하여 기술하고 있습니다. 갈수록 많은 디자인 패턴이 발견됨에 따라 상황에 맞는 디자인 패턴을 찾아내거나, 그룹화 하여 같은 그룹에 속하는 패턴끼리 비교가 용이하도록 분류해야 할 필요성이 생기게 되었다. 따라서 디자인 패턴을 조직화 함으로써, 패턴을 조직화하여 패턴을 더 빨리 배울 수 있고 새로운 패턴을 발견하고자 노력할 수 있게 된다. 패턴의 분리 기준은 목적과 범위다. 우선 목적의 기준에서 패턴은 생성, 구조, 행위 중의 한 가지 목적을 갖는다. 생성 패턴은 객체의 생성 과정에 관여하는 것이고 구조 패턴은 클래스나 객체의 합성에 관한 패턴들이다. 행위 패턴은 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정..
디자인 패턴의 종류
** 이 블로그에서 작성하는 디자인 패턴의 포스팅은 GoF의 디자인패턴 서적을 참고하여 기술하고 있습니다. GoF 디자인패턴 GoF는 'Gang of Four'의 약자로 에리히 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson, 존 블리시디스(John VLissides) GoF 디자인패턴의 공동 저자 4인을 지칭하는 단어이다. 23가지의 디자인 패턴을 정의하고, 각 패턴을 생성(Creational), 구조(Structural), 행위(Behavioral) 3가지로 조직화 했다. ** 아래의 패턴은 추후 각 패턴에 대한 블로깅이 작성되면, 링크를 걸어둘 예정입니다. Abstract Factory Pattern (추상 팩토리 패턴) 구체적인 클래스를 지..
디자인 패턴이란 무엇인가?
각각의 디자인 패턴은 기존 환경 내에서 반복적으로 일어나는 문제들을 설명하고, 그 문제들에 대한 해법의 핵심을 설명하는 것이다. 이렇게 하면 똑같은 방법을 두 번 반복하지 않은 채 이 해법을 백만 번 이상 재사용 할 수 있다. 크리스토퍼 알렉산더 (Christopher Alexander, 1936.10.04 ~ 2022.03.17) 크리스토퍼 알렉산더는 오스트리아의 유명한 건축가로, 물론 위의 이야기는 건축에 관한 이야기겠지만, 이것은 객체지향 설계의 경우에도 해당되는 이야기다. 프로그램에서는 벽이나 골조등의 건축자재를 사용하는 대신 객체와 인터페이스를 사용하지만, 건축과 프로그래밍 모두 설계를 함에 있어 패턴을 어떤 상황의 문제에 대한 솔루션으로 본다는 공통점이 있다. 디자인 패턴의 네 가지 요소 1...
디자인 패턴 - Introduction
객체지향 프로그래밍 (Object Oriented Programming) a.k.a OOP. 프로그래밍을 시작하는 사람이라면 누구나 한 번 쯤은 들어봤을 단어이고, 이걸 이해하려다가 프로그래밍 공부를 접는 경우도 여럿 보았다. 객체란 무엇인가.. 은닉화, 캡슐화, 상속, 다형성.. 개발을 하고 있는 사람들 조차도 이를 개발에 녹여내기가 참 어려운데 개발을 시작하는 사람들이 보기엔 더더욱 어려울 것이다. 처음 개발을 시작할 때 나는 그냥 이런 개념이 있구나.. 정도만 생각하고 넘어갔고, OOP 이 외에도 신기하고 공부할 것도 많았기에 대수롭지 않게 생각하고 넘어왔던 것 같다. 구글링 하면서 Ctrl CV만 해도 프로그램이 만들어졌고 신기했다. (물론 복붙이 나쁘다는 이야기는 아니다) 하지만 어느 정도 개발..