-
켄트 벡의 구현 패턴 - 설계My-Book(History) 2016. 11. 10. 18:53반응형
인터페이스
- 클라이언트에게 제공할 때의 이점은 세부 사항을 가급적 적게 드러낸다.
- 클라이언트 클래스가 여러 인터페이스를 동시에 구현할 수 있다.
- 여러 개의 연관된 인터페이스를 하나의 클래스에서 구현하는 것은 명확하고 직접적인 커뮤니케이션을 돕는다.
상위클래스
- 상위클래스에 새로운 메소드를 추가해도 호환성에 문제가 발생하지 않는다.
- 클라이언트에게 공개되는 상위클래스의 세부 사항은 공용 및 보호 메소드와 필드이다. 하지만 공개되는 내용들은 변화되지 말아야한다.
- 가급적 클래스에서 노출하는 세부 사항을 줄여서 인터페이스에서 노출하는 정보 수준에 가깝게 하라
abstract 키워드
- 기본 메소드 구현을 제공해주면 클라이언트가 좀더 쉽게 클래스를 사용할 수 있다.
그러나 상위클래스에 새로운 추상 메소드를 추가하면 호환성 문제가 발생한다.
생성자 생성 금지
- 이벤트를 언제나 프레임워크 내부에서 생성하면 프레임워크 개발자는 이벤트가 언제가 올바른 형식을 갖추고 있는 것을 보장할 수 있다.
- 복잡도를 낮출 수 있다는 장점이 있다.
- 프레임워크의 가치를 더욱 높일 수 있는 기회를 잃을 수도 있다.
생성자
- 클래스 이름, 객체 생성에 필요한 파라미터, 클래스가 속한 패키지 등 반환되는 구상 클래스의 대부분의 요소를 수정하지 않겠다고
선언하는것과 같다.
- 생성자를 통해 객체를 생성하면 클라이언트 입장에서 볼 떄 단순 명확해진다.
정적 공장
- 생성 과정을 추상화할수록 코드를 읽으면서 어느 곳에서 객체가 생성되는지를 알기 어려워진다.
setVi
- 메소드 이름을 통해 생성에 어떤 변형을 가하는지 전달할 수 있다.
메소드
- 클라이언트가 사용할 수 있는 취득 메소드나 설정 메소드는 자료 구조를 수정하지 않는 경우에만 사용할 수 있게하라.
- 설정 메소드를 공개하는 것보다는 클라이언트가 해결하려는 문제를 메소드 이름에 반영하는 편이 좋다.
ex)
void setVisible(String visible) {} -> invisible() , visible()
이 상태에서 inactive() 메소드를 상위 클래스에 추가하면 클라이언트 코드를 수정하지 않고서도 원하는 바를 이룰 수 있게 된다.
반응형'My-Book(History)' 카테고리의 다른 글
리팩토링 - 리팩토링 기법 카탈로그에 대해 (0) 2017.01.10 리팩토링 - 코드의 구린내 (0) 2017.01.10 켄트 벡의 구현 패턴 - 메소드 (0) 2016.10.29 켄트 벡의 구현 패턴 - 행위 (0) 2016.10.29 켄트 벡의 구현 패턴 - 상태 (0) 2016.10.18