TypeORM
에서 findOne
method 를 호출할 때 input 이 DeepPartial<T>
인지, Entity<T>
인지 따라 동적으로 다르게 정의된 method 들이 호출되는 게 overloading 의 대표적인 예시이다. 04부모 클래스에 기본적인 알고리즘의 흐름을 구현하고, 중간에 필요한 처리를 자식 클래스에 위임하는 디자인 패턴을
template method pattern
이라고 한다
abstract class
로 만들었다AbstractDiscountPolicy
→ AmountDiscountPolicy
로 흐름이 넘어간다