반응형

 

디자인 패턴(Design Pattern)

디자인 패턴 S/W 개발 & 설계 OOP 등에서 빠지지 않는 주제죠...
최근 강좌에서 들었던 내용을 메모했던 내용들을 적었더니, 뭔가  두서가 없어져서 습득하기는 힘들듯 해보입니다.

그래도 정리 내용은 남겨놨습니다.

설계 패턴은 자주 발생하는 설계상의 문제를 해결하기 위한 반복적인 해법[Smalltalk Companion]

"설계패턴 반복되는 구조를 설계할 때 설계를 재 활용하는데 초점을 두는데 비하여 프레임워크는 세부 설계와 구현에 초점을 두고 있다."[Coplien & Schmidt]

 


MVC 패턴

가장 대표적인 패턴으로 소프트웨어의 유저 인터페이스를 Model-View-Control 구조로 설계하는 것을 말합니다.

(1979 년 )
시작은 Xerox PARC (그 유명한 제록스의 팔로알토 연구소)에서 Smalltalk-80 기반으로 동작하는 모델-뷰-컨트롤러 를 소개하면서 부터입니다.

 

Model(data): 화면에 출력될 자료 관리
View: 화면 출력 담당
Controller: 사용자와 view간의 상호작용을 담당


Smalltalk : 가장 객체지향적인 언어.

- 다뤄보지 않아서 어떤 언어인지는 감이 없습니다.

 



GoF Design Pattern

Software계의 거장들인 Gang Of Four (GoF)가 여러가지 다양한 소프트웨어 패턴들중에서 23개를 3가지 유형으로 분류하여 목록화 하였습니다.

-  Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,

 이외에 Grady Booch 도 엄청 유명한 사람.


Creational Patterns

- Abstract factory , Builder, Dependency Injection, Factory method, Lazy initialization, Multiton, Object pool, Prototype, RAII(Resource acquisition is initialization), Singleton
Structural Patterns

- Adapter, Wrapper, Translator, Birdge, Composite, Decorator, Delegation, Extension object, Facade, Flyweight, Front Controller, Marker, Module, Proxy, Twin
Behavioral Patterns
- Blackboard, Chain of responsibility, Command, Fluent interface, Interpreter, Iterator, Mediator, Memento, Null object, Observer Pub/Sub, Servant, Specification, State, Strategy, Template method, Visitor

 

 

Concurrency patterns[POSA2 - Pattern-Oriented Softeware Architecture]

- Active Object, Balking, Binding properties, Compute kernel, Double-checked locking, Event-based asynchronous, Guarded suspension, Join, Lock, Messaging design patterm(MDP), Monitor object, Reactor, Read-write lock, Scheduler, Service handler pattern, Thread pool, Thread-specific storage, Safe Concurrentcy with Exclusive Ownership, CPU atomic operation

[객체지향 설계 철학]

역할별 분리 - 객체화, 모듈화
표준화 - 인터페이스 표준화
계층화 - 계층화 아키텍쳐

 

 

대표적인 패턴 몇가지에 대해서...

 


[Singleton]

클래스에서 객체가 1개만 만들어지도록 강제하는 하는 패턴이다.
싱글톤을 사용하는 방법과 클래스 전체를 클래스 메소드로 만들어 사용하는 방법과 의 차이
 - 객체를 생성 소멸의 lifecycle 을 통제 할수 있다.
 -1 개로 제한 할때 뿐만 아니라 개수를 제한 할 수도 있다.
      ftp server의 connection 개수 제한 등...
   때문에 클래스 메소드 보다 융통성이 있다.


[Factory Method]

 - 객체를 생성해야할 시기, 방법, 절차가 공통
 - 생성되는 객체의 class가 그때 그때 다를때...  그때그때 달라요...

 abstract class를 만든다.

추상화 클래스의 구현 클래스들을 만든다.

Factory class 를 만들고 인스턴스 생성 함수(factory method)를 만든다.

Factory()->create(클레스 구분자) 형태로 사용한다.

 

 

[Prototype 패턴]

- 객체 복사를 위한 패턴.


[Iterater]

- 반복 순환하는 구조를 컨테이너와 반복 알고리즘을 분리


[Mediator]
여러 객체들이 단위 작업을 수행하기 위해 서로 얽혀 있을때, 중계자를 두어 복잡한 작업을 중계자에게 주고 나머지 부분은 중계자에게 notify 준다.
Mediator
역할을 하는 객체를 만들어서 복잡한 작업은 Mediator에서 수행하고, 객체들은 단위 작업만 수행하도록 ,\.


[
정리 - 주장하는바]
-
설계 패터을 적용하여 설계 구현할때 초기 투자 비용이 든다.
-
하지만 이후 설계 변경 비용은 감소한다.
-
설계변경이 많다면 결과적으로 이익이다.

 

 

#해피코딩

+ Recent posts