IT모아

켄트 벡의 구현 패턴 - 설계 본문

My-Book(History)

켄트 벡의 구현 패턴 - 설계

아롱사태남 2016.11.10 18:53

인터페이스


- 클라이언트에게 제공할 때의 이점은 세부 사항을 가급적 적게 드러낸다.

 

- 클라이언트 클래스가 여러 인터페이스를 동시에 구현할 수 있다.

 

- 여러 개의 연관된 인터페이스를 하나의 클래스에서 구현하는 것은 명확하고 직접적인 커뮤니케이션을 돕는다.

 

 

상위클래스

 

- 상위클래스에 새로운 메소드를 추가해도 호환성에 문제가 발생하지 않는다.

 

- 클라이언트에게 공개되는 상위클래스의 세부 사항은 공용 및 보호 메소드와 필드이다. 하지만 공개되는 내용들은 변화되지 말아야한다.

 

- 가급적 클래스에서 노출하는 세부 사항을 줄여서 인터페이스에서 노출하는 정보 수준에 가깝게 하라

 

 

 

abstract 키워드

 

- 기본 메소드 구현을 제공해주면 클라이언트가 좀더 쉽게 클래스를 사용할 수 있다.

  그러나 상위클래스에 새로운 추상 메소드를 추가하면 호환성 문제가 발생한다.

 

생성자 생성 금지


- 이벤트를 언제나 프레임워크 내부에서 생성하면 프레임워크 개발자는 이벤트가 언제가  올바른 형식을 갖추고 있는 것을 보장할 수 있다.


- 복잡도를 낮출 수 있다는 장점이 있다.


- 프레임워크의 가치를 더욱 높일 수 있는 기회를 잃을 수도 있다.


생성자


- 클래스 이름, 객체 생성에 필요한 파라미터, 클래스가 속한 패키지 등 반환되는 구상 클래스의 대부분의 요소를 수정하지 않겠다고 

   선언하는것과 같다.


- 생성자를 통해 객체를 생성하면 클라이언트 입장에서 볼 떄 단순 명확해진다.


정적 공장


- 생성 과정을 추상화할수록 코드를 읽으면서 어느 곳에서 객체가 생성되는지를 알기 어려워진다.

setVi

- 메소드 이름을 통해 생성에 어떤 변형을 가하는지 전달할 수 있다.



메소드


- 클라이언트가 사용할 수 있는 취득 메소드나 설정 메소드는 자료 구조를 수정하지 않는 경우에만 사용할 수 있게하라.


- 설정 메소드를 공개하는 것보다는 클라이언트가 해결하려는 문제를 메소드 이름에 반영하는 편이 좋다.


ex) 

void setVisible(String visible) {} -> invisible() , visible()


이 상태에서 inactive() 메소드를 상위 클래스에 추가하면 클라이언트 코드를 수정하지 않고서도 원하는 바를 이룰 수 있게 된다.



0 Comments
댓글쓰기 폼