Object) Connect to Strategy Object (Plan2)
next필드를 이용하여 전략객체들이 다음 타자를 가지고 있도록 연결
📜 제목으로 보기
- context를 인자로 공유하는, 연결될 합성객체는 개별로 [생성자 주입받는 다음타자 next필드] + [return null터미네이닝 재귀호출]로 연결된다.(실습)
- 유사 데코레이터 패턴의 Clinet코드 및 내부 중복로직을 추상클래스로 제거하기(설명)
context를 인자로 공유하는, 연결될 합성객체는 개별로 [생성자 주입받는 다음타자 next필드] + [return null터미네이닝 재귀호출]로 연결된다.(실습)
- 
연결합성객체는 재귀처럼 다음 연결된 합성객체를 호출한다.
    - 재귀처럼 호출하려면, if 종착역 끝 + return 종착역 아니면 다음타자 호출한다.
        - 종착역은 다음타자가 null으로서 없을 때 누적변수를 반환하는 것이다.
 
- 전략객체는 전략메서드로서 시그니처가 통일되었으므로 주체만 next필드에 미리 담아놓아야한다 -> 생성자 주입 받는다.
- 만약, 생성자 주입에서 null이 입력되면, 다음타자는 없는 것으로 한다.
 
- 재귀처럼 호출하려면, if 종착역 끝 + return 종착역 아니면 다음타자 호출한다.
        
- 
    PricePerTime  - 
생성자로 동급의 다음 합성객체(전략객체)를 주입받는다.
        - 이후 client에서 사용은 데코레이터 패턴처럼 포장하는 모양을 가지게 된다.
 
- 나의 할일이 끝나고, return문에 재귀함수처럼 next필드에 있는 다음타자의 전략메서드를 호출하되, 다음타자가 없으면 == null현재의 결과누적변수를 반환한다.
   
- 
생성자로 동급의 다음 합성객체(전략객체)를 주입받는다.
        
- 
    early return + 바로 return은 3항연산자로 변경할 수 있다.   
- 
    나머지 NightDiscount는 같은 처리  
- 
    Tex전략객체는 새로 추가해준다. ratio만큼 세금만 뗀다.  
- 
    AmountDiscount도 추가한다.  
- 
    Main에서 사용법 - 
        각 전략객체를 데코레이터 패턴으로 생성자 주입하면, 콜백 지옥의 장풍형태가 만들어진다.
- 
        다음 타자가 없을 경우, 생성자에 null을 입력하여 터미네이팅하는 재귀호출형태다. 
  
- 
        
유사 데코레이터 패턴의 Clinet코드 및 내부 중복로직을 추상클래스로 제거하기(설명)
- 
    client에서 사용하는 유사 데코레이터 패턴의 생성자 체이닝 (문제점)  
- 
    내부에 존재하는 유사 데코레이터 패턴 로직  
- 
    문제점 파악하기 - 
        전략객체들이 직접 다음타자 주입 + next필드 + 재귀호출부를 가져 코드중복이 발생한다. 중복코드는 템플릿메소드형태의추상클래스로 제거한다.  
- 
        중복제거를 위해 올린 생성자 주입 -> 부모 추상클래스는좋은 상속조건에 의해 생성자 주입을 받지 않는다.에 의해생성자 주입 대신 setter받기기능을 사용하되,return this를 이용한 [setter 체이닝 받기기능]를 이용한다.- setter체이닝받기는 받기기능의 주체 = 받고난 뒤 return되는 객체가 동일해야한다.
  
- setter체이닝받기는 
 
-