prgrms-web-devcourse / BE-Team-preArmand-Book-study

2 stars 2 forks source link

[아이템 18] 질문 모음 #9

Closed yuminhwan closed 2 years ago

yuminhwan commented 2 years ago

p.119 두번째 문단

래퍼클래스는 콜백 프레임워크에서 자기 자신의 참조를 ~ 이를 SELF 문제라고 한다.

예제 코드인데 정확히 이해가 되지 않는 느낌입니다. 이해 하신 분 설명 부탁드립니다 ㅠㅠ


p.120 두번째 문단

두 사례 모두 컴포지션을 사용했다면 더 좋았을 것이다.

Properties를 키와 값으로 문자열만 허용하도록 할려면 어떻게 컴포지션을 이용해야 할까요??

epicblues commented 2 years ago
  1. 예제 코드의 첫 번째 예시는 저도 이해를 못했습니다. 두 번째 예시는 이런 식으로 이해했습니다.

WrappedObject 인스턴스와 Wrapper의 인스턴스가 다르기 때문에 (상속 관계도 아니고) Wrapper가 wrappedObject의 doSomething()을 호출하면 해당 스레드는 wrappedObject의 doSomething()의 코드 블록으로 이동하면서 this를 wrappedObject로 설정하는 것으로 알고 있습니다.


    class WrappedObject implements SomethingWithCallback {

      private final SomeService service;

      WrappedObject(SomeService service) {
        this.service = service;
      }

      @Override
      public void doSomething() {
       // 스레드가 이 코드 블록으로 들어오면 this = WrappedObject가 되는 것으로 알고 있습니다?
        service.performAsync(this);
      }

      @Override
      public void call() {
        System.out.println("WrappedObject callback!");
      }
    }

    public static void main(String[] args) {
        SomeService   service       = new SomeService();
        WrappedObject wrappedObject = new WrappedObject(service); // 두 인스턴스는 완전히 다르다.
        Wrapper       wrapper       = new Wrapper(wrappedObject);
        wrapper.doSomething();
    }   
epicblues commented 2 years ago
  1. 시도해봤는데 상속밖에 답이 없는 것 같습니다?😂