코드에서 어떤 부분은 변하려하고 어떤 부분은 변하지 않으려한다.
또한 변하는 부분 중에서는 서로 다른 목적과 이유에 의해서 변화하는 주기가 다른 것들이 있다.
이런 부분들이 효율적으로 변경될 수 있도록 구조를 만들어주는 것이 개방 폐쇄 원칙이다.
템플릿은 이렇게 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않는 부분을 변경이 심한 부분과 분리하여 효과적으로 대응할 수 있게 만들어주는 구조이다.
JDBC DB 에러 처리와 resultSet, prepareStatment, connection 반납 코드 같은게 대표적이다.
→ 이 부분은 안변하는 코드이면서 모든 곳에서 중복될 가능성이 높은 코드임
근데 이것도 매번 전략 클래스 만들어야하는거 아닌가..?
→ 후에 보완됨
그리고 템플릿 메소드 방식에서도 추상클래스 혹은 상속을 이용한 부모 클래스를 인자로 받게 한뒤 전략패턴과 비슷하게 만들 수 있는거 아닌가? (컴파일 시점에 관계가 고정되어 유연성이 떨어진다고 해서;;)
그러면 추상 클래스랑 인터페이스 골라야하는 기준이 뭐지?