개방 폐쇄 원칙(OCP)
클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다.
변화의 특성이 다른 부분을 구분하고 각각 다른 목적과 이유에 의해 다른 시점에 독립적으로 변경될 수 있는 효율적인 구조를 만들어야 한다.
템플릿
코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분(템플릿)을
자유롭게 변경되는 성질을 가진 부분(콜백)으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법
템플릿 메서드 패턴도 템플릿을 사용한다.
다만, 템플릿 메서드 패턴은 상속을 이용
템플릿은 전략 패턴이 적용되었다
콜백(Callback)
- 콜백은 실행되는 것을 목적으로 다른 오브젝트의 메서드에 전달되는 오브젝트
- 파라미터로 전달되지만 값을 참조하기 위한 것이 아니라 특정 로직을 담은 메서드를 실행시키는 것이 목적
- 하나의 메서드를 가진 인터페이스타입의 오브젝트 또는 람다 오브젝트
스프링에는 다양한 Template로 끝나는 클래스들이 존재한다.
이러한 클래스들이 템플릿이 적용된 것이다.
변경되지 않는 부분은 메서드에 로직으로 존재하고, 변경되는 부분은 해당 메서드의 파라미터로 전달되어 콜백 호출된다.
언젠간 이러한 구조의 클래스를 만드는 날이 와서, 적용해 보면 좋을 거 같다.
그때까지 잘 기억하고 있어야 할 텐데.. ㅎㅎ