'디자인패턴'에 해당되는 글 1건

  1. 2011.03.30 기본 Design Pattern (7)
2011.03.30 17:40
제가 이해한 것을 간단하게 정리하는 식으로 할 것입니다. 자세한 내용은 책이나 구글링을 하세요!!


 연구실에서 이야기를 하던 중 디자인패턴에 대해서 이야기가 나왔다. 그런데 막상 어떤 디자인 패턴에 대해서 물었을 때 명확히 이야기 할 수 없었고 소프트웨어 개발 방법론과 뒤섞여 나오는 등 한번 정리를 해야 될 필요성을 느꼈다.
 


OOP(Object-oriented programming)가 되면서 디자인 패턴이 필수와 같이 여겨지고 있다. 코드의 재사용성, 설계의 편리, 알고리즘의 정형화 등 진부한 서론은 생략하도록 하고 본론으로 들어가보자.

오늘 포스팅에서 논의할 만약 강의였다면  타입별로 정의할 테지만 오늘 포스팅에서는 많이 쓰는 패턴 몇 가지를 카테고리화 해서 알아볼까 한다.

 각 디자인 패턴의 Focus는 문제가 되는 상황과 그를 극복하는 방법이며 이를 해결하기 위해 UML 등을 통해 기술한 Relation을 보는 것이다. 필자의 의도를 알고 본다면 공부할때 더 도움이 될 것이다.

 내용이 많으므로 카테고리와 내용을 트리구조로 나타내겠다.


Creational Patterns(객체의 생성 관련)

Singleton : Ensure a class has only one instance, and provide a global point of access to it.

Abstract Factory : Provide an interface for creating families of related or dependent objects without specifying their concrete classes.

Factory method : Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.

Builder : Separate the construction of a complex object from its representation allowing the same construction process to create various representations.

Lazy initialization : Tactic of delaying the creation of an object, the calculation of a value, or some other expensive process until the first time it is needed.


Behavioral Patterns (이벤트 관련)

Iterator : Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.

Visitor : Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.

Command : Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.

Strategy : Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.

Observer : Define a one-to-many dependency between objects where a state change in one object results with all its dependents being notified and updated automatically.

BlackBoard : Generalized observer, which allows multiple readers and writers. Communicates information system-wide.


Structural Patterns

Facade : Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.

Adapter(or Wrapper) : Convert the interface of a class into another interface clients expect. An adapter lets classes work together that could not otherwise because of incompatible interfaces.

Proxy : Provide a surrogate or placeholder for another object to control access to it.





 오늘 한 내용 외에도 수많은 디자인패턴이 있고 그 중 실제 많이 쓰고 있는 것을 간략히 정리 한 것이어서 논의 배경과 같은 지식과 각각의 디자인패턴의 디테일한 내용을 공부하기를 권한다. 

 그래도 이 정도만 알고 있고 실제로 응용할 수 있는 정도의 내공이 쌓인다면 개발시 깔끔하고도 정교한 소프트웨어가 나오지 않을까 생각된다.


 오늘도 전반적인 가이드라인과 동기 및 모르는 것에 대해서 조언을 주신 연구실 선배 semix2님께 다시 감사를 드립니다 ^^ 

 참조 : 위키

 4일이나 걸렸네요.. Concurrency pattern도 다루고 싶었는데 너무 양이 많아졌기도 하고 Thread에 관련된 내용이 많으므로 기본 디자인패턴이라는 제목에 맞게 제외하였습니다. Thread에 대해서 다룰 기회가 될 때 같이 해보겠습니다 =.=
신고

'프로그래밍 일반' 카테고리의 다른 글

Git 후기  (0) 2011.05.09
Git 구축 완료  (1) 2011.05.09
소프트웨어 개발 프로세스 모델  (2) 2011.04.21
Idiom 이란?  (0) 2011.04.07
Simple MATLAB  (0) 2011.04.04
기본 Design Pattern  (7) 2011.03.30
Posted by JAVA_HOME

댓글을 달아 주세요

  1. 솔이빠 2011.04.04 11:29 신고  댓글주소  수정/삭제  댓글쓰기

    정리를 잘 하셨네요. 잘 보고 갑니다.

  2. 주인 2011.04.04 12:02 신고  댓글주소  수정/삭제  댓글쓰기

    고맙습니다^^ 첫댓글이세요 ㅎㅎ

  3. 사람 2011.04.04 14:41 신고  댓글주소  수정/삭제  댓글쓰기

    IOC는?

  4. 주인 2011.04.04 15:18 신고  댓글주소  수정/삭제  댓글쓰기

    어려워서 -..- 다음에 하겠습니다 ㅎㅎ

  5. JAVA_HOME 2011.04.07 21:42 신고  댓글주소  수정/삭제  댓글쓰기

    Effective Java 항목 3에 Singleton의 구현방법을 추가하였습니다.

  6. 지나가는 2011.04.18 11:06 신고  댓글주소  수정/삭제  댓글쓰기

    잘보고 갑니다.~ 머미로는 이해가는데 손가락이 따라가 주질 않네요 ㅎㅎ

  7. 세일러문 2011.06.17 18:22 신고  댓글주소  수정/삭제  댓글쓰기

    다양한 디자인 패턴을 이해하기 쉽게 적어주셔서 감사합니다. 잘 보고 갑니다.


티스토리 툴바