ruby로 배우는 디자인패턴3 【Template Method】

Posted by negabaro kim on Friday, June 5, 2020 Tags: ruby/design-pattern   1 minute read

Template Method패턴이란?

추상적인 부분구체적인 로직을 분리해서 사양변경에 강한 코드를 만드는 패턴

추상적인 부분은 안바뀌는 성질이고 구체적인 로직은 바뀌는 부분이 됨

목적?

소프트웨어는 언제나 바뀔 가능성이 있다. 이 변화에 유연하게 대응하기 위해 절대 바뀌지 않는 부분과 바뀔 수 있는 부분을 나누는 것.

냉소주의 모드

그런데 절대 바뀌지 않다고 생각한 부분도 바뀔때가 있으니.. 이것을 정하는게 참 어려운 문제이긴하다.

몇가지 연습을 해보자.

연습1

레포트 모델이 있다. 레포 모델은 레포트 출력을 하는데 pdf,plain text,html 형식이 있다

라는 사양이라면

레포트를 출력한다를 추상클래스(템플릿 클래스)에 넣고

pdf로,plain text으로, html으로 부분을 각각 서브 클래스에 정의해주면 됨 해당 서브클래스는 추상클래스를 상속받는 형태

연습2

로그인 기능 develop에는 session만 저장해 로그인을 하고 production에서는 특정 아이피에서만 억세스가능한 인증서버를 이용해 로그인 인증후 세션에 값을 저장해 로그인한다

추상 클래스에 정의할 내용

session을 저장한다

연습3

사양:

조직은 협회,대학교,운동부 3개의 종류가 있다.

조직에는 이름,전화번호가 있음

운동부의 이름은 무슨대학교 운동부라고 표시

운동부는 하나의 대학교에 소속되고 하나의 협회에도 소속됨

대학교는 복수의 운동부를 소속함

협회는 복수의 운동부를 소속함

추상클래스에 조직의 이름,전화번호 출력 로직을 정의 조직은 하나이상의 다른 조직에 소속되거나 소속함을 정의(?)

운동부 서버 클래스에 이름 출력을 재정의 각 로직의 서브 클래스에서 소속로직에 대한 재정의