PostIT

[Java/DesignPattern] Java Design Pattern Overview 본문

Java/Design Pattern

[Java/DesignPattern] Java Design Pattern Overview

shun10114 2017. 7. 12. 00:02

[Java/DesignPattern] Java Design Pattern Overview

## 1. 내용

- 디자인 패턴이란?

디자인 패턴은 숙련 된 객체 지향 소프트웨어 개발자가 사용하는 모범 사례를 나타낸다고 볼 수 있습니다. 즉, 디자인 패턴은 소프트웨어 개발 중에 소프트웨어 개발자가 직면 한 일반적인 문제에 대한 하나의 해결책이라고 볼 수 있습니다. 이러한 해결책은 상당 기간 동안 수많은 소프트웨어 개발자가 시행 착오를 통해 얻어진 결과입니다. 이렇게 오랜 기간동안 증명되어온 결과는 일종의 패턴으로 굳어진 것으로 이를 디자인 패턴이라고 명명합니다.


- GoF란?

1994년 Erich Gamma, Richard Helm, Ralph Johnson 및 John Vlissides라는 4 명의 저자가 Software design에서 Design Pattern의 개념을 시작한 Designable Patterns-  Elements of Reuseable Object-Oriented Software의 책을 출간했습니다. 

이 저자들이 GoF(GoF)라고 알려져 있습니다. 이 저자들에 따르면 디자인 패턴은 주로 객체 지향 디자인의 다음 원칙에 기반합니다.

  • 구현이 아닌 인터페이스에 프로그래밍 하십시오.
  • 개체 구성을 상속보다 우선합니다.

- 디자인 패턴의 종류
패턴은 목적과 형태에 따라 크게 생성(Creational) 패턴, 구조(Structural) 패턴, 행위(Behavioral) 패턴 으로 나눈다. 이는 어떤 상황이며 어떤 패턴이 적용될 수 있는지 판단하는데 좋은 평가항목이 된다. 세가지 큰 분류에 따라 각 패턴에 대해 설명하였다.

생성(Creational) 패턴

구조(Structural) 패턴

행위(Behavioral) 패턴

 Abstract Factory

Builder
Factory Method
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight

Proxy 


Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
Strategy (& State)
Template Method

Visitor 


## 2. 목적

- 개발자를 위한 공통 플랫폼

디자인 패턴은 표준 용어를 제공하며 특정 시나리오에만 적용됩니다. 예를 들어, 싱글톤 디자인 패턴은 단일 객체의 중요성을 나타내기 때문에 싱글톤 디자인 패턴에 익숙한 모든 개발자는 단일 객체를 사용하고 프로그램이 싱글톤 패턴을 따르고 있음을 서로 말할 수 있습니다


- 모범 사례

디자인 패턴은 오랜 기간 동안 발전되어 왔으며 소프트웨어 개발 중에 직면 한 특정 문제에 대한 최상의 솔루션을 제공합니다. 이러한 패턴을 학습하면 미숙 한 개발자가 쉽고 빠르게 소프트웨어 디자인을 배울 수 있습니다.

## 3. 결론

- 결론은 여러 글을 읽으며 좋은 내용들을 담았습니다. 

  • 여기서 내가 강조하고 싶은 것은 디자인패턴 GoF 책을 어떻게 읽느냐는 것이다많은 사람들은  내용을 온전히 이해하기 위해서는 순서대로 읽어야 한다고 느낀다하지만 GoF 소설이 아니라 레퍼런스 북이다독일어를 배우기 위해 독영 사전의 처음부터 끝까지 하나하나 읽으려고 하는 경우를 생각해 보라그렇게는 결코 배울  없을 것이다독일어를 마스터하기 위해서는 독일어 문화에 자기 자신을  담궈야(immerse) 한다독일어로 살아야 하는 것이다.

    디자인패턴도 똑같다그걸 마스터하기 이전에 소프트웨어 개발에 자신을  담궈야 한다패턴으로 살아야 하는 것이다만약  그래야 한다면 소설 읽듯이 디자인패턴 책을 읽어라하지만 거의 아무도  방식으로 유창해지지 못한다소프트웨어 개발 프로젝트의 열기 속에서 패턴이 동작하게 하라실제 디자인 문제를 직면했을   패턴들의 통찰을 이용하라이것이 GoF 패턴들을 자신의 것으로 만드는 가장 효율적인 방법이다.

  • 우선 디자인 패턴은 "외우기"만 하는 것이 아니라, "이해하고, 익혀야만" 한다는 걸 명심해야 합니다.
    왜냐하면, 디자인 패턴의 적용은 중, 고등학교 때 수학을 배울 때 선생님들이 하시던 말씀을 잘 생각해보면 됩니다.
    "공식을 외운다고 모든 수학 문제를 풀 수 있는 건 아냐!?" 
    디자인 패턴을 일종의 수학 공식이라고 보면 쉽습니다. 공식을 외운다고 실제 프로그래밍에 100% 적용 가능한 것은 아닙니다.

    이는 어디에서 어떻게 디자인 패턴을 적용할 것인가 또는 
    적용이 가능하다고 판단하여, 디자인 패턴을 실제로 적용했을 때, 이 디자인 패턴이 정말 효율적인가에 대한 판단력이 있어야 합니다. 
    즉, "공식 암기와 적용이 항상 최선의 방법은 아니란 것!?"
    수학문제와 공식의 관계를 잘 생각하면서 한번 되짚어 보면 이해가 빠르실 것이라 믿습니다.

  • 추가적으로 패턴이 개발의 해결법은 아닙니다.
    "패턴을 가장 잘 아는 것은 패턴을 쓰지 말아야 할 곳을 잘 아는 것"이라고 합니다.
    패턴을 공부하시되 그것을 외워서 모든 것에 적용하시려는 생각은 하지 마세요.


- 3가지의 내용이 공통적으로 얘기하는 것은 하나라고 생각합니다.

"디자인 패턴이 하나의 해결책으로서 참조 할 수 있는 좋은 해결책일 뿐, 모든 것을 해결해주는 정답이 아니다. 그러므로, 디자인 패턴의 이해를 통해 효율/효과적으로 프로그래밍에 적용시킬 줄 알아야 한다." 입니다.

## 4. 첨언

다음에는 Java를 통해 Design Pattern의 예제들을 직접 구현하면서 하나하나 주석을 달아 이해하는 시간을 가져보겠습니다. 왜 디자인 패턴이 나오게 되었는지에 대한 학습을 통해 스스로의 통찰과 의견을 다른 사람들과 공유하고 피드백을 받을 수 있는 시간을 가져보겠습니다.

## 5. 참조

http://aroundck.tistory.com/1 [돼지왕 왕돼지 놀이터]



Comments