E D R , A S I H C RSS

GRASP


이 내용은 Applying UML and Patterns CHAPTER 22 GRASP에서 얻어온 것입니다

1. Information Expert

2. Creator

3. High Cohesion

4. Low Coupling

5. Controller

6. Polymorphism

타입에 따라 대안이나 행위가 변할 때, 해당 타입들에 행위의 책임을 할당하라

Pluggable Software Component
일관된 interface를 사용

6.1. Related Patterns

Protected Variations
Adapter, Command, Composite, Proxy, State, Strategy

7. Indirection

8. Pure Fabrication

문제 도메인 개념을 표현하지 않는 인위적인, 편의상 만든 클래스에 매우 응집된 책임들을 할당한다.
Pure Fabrication 클래스를 식별하는 것은 중대한 일이 아니다. 이는 어떤 소프트웨어 클래스는 도메인을 표현하기 위한 것이고 어떤 소프트웨어 클래스는 단순히 객체 설계자가 편의를 위해 만든 것이라는 일반적인 점을 알리기 위한 교육적인 개념이다. 편의를 위한 클래스들은 대개 어떤 공통의 행위들을 함께 그룹짓기 위해 설계되며, 이는 표현적 분해보다는 행위적 분해에 의해 생성된다.

  • 표현적 분해(Representational Decomposition) : 도메인 상의 어떤 것에 연관되어 있거나 그것을 표현
  • 행위적 분해(Behavioral Decomposition) : 행위를 그룹화하거나 알고리즘에 따라 책임을 할당, 몇몇 관련된 행위나 방법들을 그룹화하도록 개발자가 편의상 만들어 낸 클래스, 행위적 분해에 의한 것

8.1. Related Patterns

Adapter, Command, Strategy

9. Protected Variations

변화 가능성이 있는 부분에 인터페이스를 형성하도록 책임을 할당하라.
이 패턴은 매우 기초적인 설계 원리이지만 Cockburn에 의해 처음 발표되었다.
PV와 관련된 다양한 기법들이 있는데 그중 하나가 LawOfDemeter라는군요. :)
그 외에 DavidParnas의 On the Criteria To Be Used in Decomposing Systems Into Modules에서 InformationHiding 개념을 소개했고 DataEncapsulation과 혼동하는 경우가 많았다고 말해주네요. OCP에 대해서도 이야기해 주고 ...




Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:17
Processing time 0.0432 sec