'JAVA/Design Patterns'에 해당되는 글 2건

  1. 2008.12.12 GRASPA -(General Responsibility Assignment Software Patterns)
  2. 2008.12.11 상태와 알고리즘
JAVA/Design Patterns2008. 12. 12. 15:10
GRASPA패턴은 객체지향설계에서의 역할(책임)의 부여 혹은 할당을 위한 지침이다.
Craig Larman이 저서인 'APPLYING UML AND PATTERNS' 에서 소개하고 있다.

리팩토링의 'indirection'의 의미를 찾다가 알게 되었으며 패턴이라 하기엔 무척 간단하다.
  • Controller
    이벤트(버튼클릭등) 발생시 책임(역할)을 부여한다.
    디자인패턴으로 유명한 MVC 패턴에서 Controller 패턴이 적용되고 있다.
  • Create
    인스턴스 생성시 책임(역할)을 부여한다.
  • Expert
    필요한 정보를 보유하고 있는 클래스에 책임(역할)을 부여한다.
  • High Cohesion
    관련된 기능을 하나의 오브젝트로 묶을 수 있도록 책임(역할)을 부여한다.
  • Indirection
    클래스사이에 간접클래스를 정의한다.
  • Low Coupling
    오브젝트 끼리의 결합도가 낮아 지도록 책임(역할)을 부여한다.
  • Polymorphism
    다형성
  • Pure Fabrication
    공통의 기능을 제공하는 클래스를 생성해 책임(역할)을 부여한다.
  • Variation Protected
    앞으로 예측되는 변화에 대해 기존의 설계에 반영하여 책임(역할)을 부여한다.

Posted by B정상
JAVA/Design Patterns2008. 12. 11. 12:24
상태와 알고리즘 무슨 얘기인지 싶을 것이다. 스테이트 패턴과 스트레티지 패턴에 대한 얘기다.
if문 혹은 switch 문에 의한 분산처리가 많을 경우 리팩토링시 두 패턴을 고려하는 경우가 많다.

근데 이게 참 미묘하다. 한쪽은 상태값에 따른 처리를 위해서 존재한다고 하고
한쪽은 알고리즘에 따른 처리를 위해 존재한다고 하는데 시스템 전반에 걸쳐 내용을 알지 못하면
이것이 어떤 패턴을 고려해야 할지 어렵게 느껴진다. (우선 경험의 차이라 보겠다.)

스테이트 패턴과 스트레티지 패턴은 미묘하게 닮아있다.
이둘은 하나의 패턴으로 파생되어 상태와 알고리즘이란 목적에 따라 나뉘게 되었다.
하나씩 보면 끄덕거려 지는데 둘을 섞어놓으면 너무나 닮은 모습에 혼돈이 오곤한다.

그래서 결론은... 상황에 따라 잘 맞는 패턴을 선택하라!!!!

사용자 삽입 이미지











<<스트레티지 패턴 클래스 다이어그램>>

사용자 삽입 이미지
 










<<스테이트 패턴 클래스 다이어그램>>


Posted by B정상