반응형
728x90

디자인패턴을 세 가지 특성으로 분류하고 목적 기준으로 말해보세요.

갱 오브 카테고리

- Creational : New를 하지 않는다, 객체 인스턴스 생성을 위한 패턴으로, 클라이언트와 그 클라이언트에서 생성할 객체 인스턴스 사이의 연결을 끊어주는 패턴이다.

- Structural : 구조적인 패턴, 클래스 및 객체들을 구성(합성)을 통해서 더 큰 구조로 만들 수 있게 해주는 것과 관련된 패턴이다.

- Behavioral : 클래스에 책임할당, 정적관계와 의사소통, 클래스와 객체들이 상호작용하는 방법 및 역할을 분담하는 방법과 관련된 패턴이다.

디자인패턴을 범위 기준으로 말해보세요.

클래스 패턴에서는 클래스 사이의 관계가 상속을 통해서 어떤 식으로 정의되는지를 다룬다. 클래스 패턴에서는 컴파일 시에 관계가 결정된다.

오브젝트 패턴에서는 객체 사이의 관계를 다루며, 객체 사이의 관계는 보통 구성을 통해서 정의된다. 객체 패턴에서는 일반적으로 실행 중에 관계가 생성되기 때문에 더 동적이고 유연하다.

 

General Responsibility Assignment Software Pattern, GRASP에 대해서 설명하세요.

- Creator : 생성되는 객체의 컨텍스트를 알고 있는 다른 객체가 있다면, 컨텍스트를 알고 있는 객체에 객체의 생성을 부여.


- Controller : 시스템 이벤트(사용자의 요청)를 처리할 객체를 만들자.


- Pure Fabrication : 도메인에 관련된 문제를 대표하는 것이 아니라면 기능적인 
책임을 별도로 한 곳으로 관리하는 객체를 만들자.


- Information Expert : 책임을 수행할 수 있는 데이터를 가지고 있는 객체에 책임을 부여하는 것.
객체는 데이터와 처리로직이 함께 묶여 있는 것.
정보 은닉을 통해 자신의 데이터를 감추고 오직 Method로만 데이터를 처리하고, 외부에는 그 기능(책임)만을 제공한다.


- High Cohesion : 모듈 하나에서 응집되어 있는지 : 높을수록 좋다


- Indirection : 두 객체 사이의 직접적인 Coupling을 피하고 싶으면, 그 사이에 다른 매개체를 통해 전달하는 것.


- Low Coupling : 여러 모듈간 측정 인터디펜턴시 : 약할수록 좋다


- Polymorphism : 객체의 종류에 따라 행동양식이 바뀐다면, Polymorphism 기능을 사용하자.


- Protected Variations : 변경될 여지가 있는 곳에 안정된 인터페이스를 정의해서 사용하자.
- Don’t talk to Stranger : 높은 결합을 피하기 위해. 특히, 클라이언트 개체가 서버 개체의 내부 구조 및 연결에 대해 소유해야 하는 지식의 정도를 제한합니다.

Coupling과 Cohesion의 차이를 설명하세요.

Coupling : 여러 모듈간 측정 인터디펜턴시 : 약할수록 좋다
Cohesion : 모듈 하나에서 응집되어 있는지 : 높을수록 좋다

 

Pattern-Oriented Software Architecture, 세 가지로 구분

아키텍처 패턴 : 시스템 전체에 대한, 조직에 대한 결정, 소프트웨어의 전체적인 구조, 관계 가이드 룰,  ex) MVC 패턴
디자인 패턴 : 위보다 작은 서브시스템 컴포넌트 리파인, 전체 시스템에 영향을 미치지 않음, ex) 옵저버패턴
코팅 패턴 : 스페시픽한 프로그래밍 랭기지, ex) 포인터**

728x90
1···78910111213···15
반응형

+ Recent posts