ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 켄트 벡의 구현 패턴 - 설계
    My-Book(History) 2016. 11. 10. 18:53

    인터페이스


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

     

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

     

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

     

     

    상위클래스

     

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

     

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

     

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

     

     

     

    abstract 키워드

     

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

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

     

    생성자 생성 금지


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


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


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


    생성자


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

       선언하는것과 같다.


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


    정적 공장


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

    setVi

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



    메소드


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


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


    ex) 

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


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



Designed by Tistory.