코드에서 어떤 부분은 변하려하고 어떤 부분은 변하지 않으려한다.

또한 변하는 부분 중에서는 서로 다른 목적과 이유에 의해서 변화하는 주기가 다른 것들이 있다.

이런 부분들이 효율적으로 변경될 수 있도록 구조를 만들어주는 것이 개방 폐쇄 원칙이다.

템플릿은 이렇게 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않는 부분을 변경이 심한 부분과 분리하여 효과적으로 대응할 수 있게 만들어주는 구조이다.

JDBC DB 에러 처리와 resultSet, prepareStatment, connection 반납 코드 같은게 대표적이다.

→ 이 부분은 안변하는 코드이면서 모든 곳에서 중복될 가능성이 높은 코드임

1. 템플릿 메소드 적용

2. 전략 패턴 적용