반복되는 코드를 계속 사용하는 것이 아니라, 하나의 component로 만들어서 계속 사용하게 코드를 바꾸는 것이다.
refactoring를 하면, 가독성을 높이고 유지보수를 쉽게 할 수 있게 도와준다.

상속을 통한 refactoring이다. 해당 방법은 부모 클래스에 미리, 반복되는 component들을 하나의 component로 만들어, 자식 클래스에서는 해당 component를 부르는 것만으로, 동일한 기능이 작동되게 한다.

다음은 반복되는 component를 부르는 component를 다른 클래스에 정의한 후, 필요한 경우에 해당 component를 부르는 방법으로 refactoring한 경우이다.
Template Method Pattern이란

abstract class이다.
post method를 제외한 method들은 모두 abstract method이다. 즉 하위 클래스에서 해당 method들을 정의해야된다는 것이다. 시그니처들은 미리 정의해놓았기 때문에, 이 class를 상속받은 하위 클래스는 비슷한 logic을 갖고 있는다고 볼 수 잇다.

해당 class는 앞에서 본 network class를 상속받은 클래스이다.
constructor로 상속받은 member variable들을 초기화 시켜준다.
그리고 상속받은 abstract method들을 오버라이딩해준다.
network class를 상속받은 다른 class인 facebook class도 위 twitter class와 동일한 logic가지고, 오버라이딩을 한다. 다만, 세세한 내용들만 다르다.
이렇게 template method pattern은 같은 역할을 하는 Method지만, 다른 class에서 형태만 다르게 구현되는 코드를 작성할 때, 유용하게 사용할 수 있는 디자인 패턴이다.