inblog logo
|
silver
    디자인패턴

    [디자인패턴] 6. 템플릿 메소드 패턴

    silver's avatar
    silver
    Nov 13, 2024
    [디자인패턴] 6. 템플릿 메소드 패턴
    Contents
    1. 템플릿 메소드 패턴 이해 코드
     
    • 상위 클래스에서 알고리즘의 골격을 정의, 하위 클래스에서 세부 단계의 구체적인 구현을 맡도록 하는 구조
    • 공통의 작업 순서가 있지만, 세부 단계는 상황에 따라 달라져야 할 때 유용하게 사용 - 재사용성에 좋음
     

    1. 템플릿 메소드 패턴 이해 코드

     
    Interface
    interface를 상속받는 클래스에서 무조건적으로 실행해야함.
    public interface TeacherAble { public abstract void 수업하기(); }
    상위 클래스
    TeacherAble라는 interface를 implements해 수업하기라는 메소드를 실행하게 함.
    하위클래스에서 다중 상속이 불가능하므로 interface와 조합해서 사용가능!
    public abstract class Teacher implements TeacherAble { // 공통 메소드 : 동일하게 적용 protected void 입장하기() {System.out.println("입장하기");} protected void 출석부르기() {System.out.println("출석부르기");} protected void 퇴장하기() {System.out.println("퇴장하기");} // 추상메소드 : 하위 클래스에서 구체적인 수업과목을 구현 protected abstract void 강의하기(); // 템플릿 메소드 : 수업 알고리즘의 흐름을 정리 -순서 고정 public void 수업하기(){ // 캡슐화로 코드의 안정성 확보 입장하기(); 출석부르기(); 강의하기(); 퇴장하기(); };
     
    하위 클래스
    public class FlutterTeacher extends Teacher{ // 템플릿 메소드를 사용하지 않았을 때 번거롭게 모든 클래스에서 아래처럼 적어야함 // @Override // public void 수업하기() { // 입장하기(); // 출석부르기(); // 강의하기(); // 퇴장하기(); // } @Override protected void 강의하기() { System.out.println("플러터 강의하기"); } }
    public class JavaTeacher extends Teacher { @Override protected void 강의하기() { } public class PythonTeacher extends Teacher { @Override protected void 강의하기() { } public class HTMLTeacher extends Teacher { @Override protected void 강의하기() { } public class FlutterTeacher extends Teacher { @Override protected void 강의하기() { }
    App
    import ch05.teacher.FlutterTeacher; import ch05.teacher.HtmlTeacher; import ch05.teacher.JavaTeacher; import ch05.teacher.PythonTeacher; public class App { public static void main(String[] args) { JavaTeacher jt = new JavaTeacher(); jt.수업하기(); PythonTeacher pt = new PythonTeacher(); pt.수업하기(); HtmlTeacher ht = new HtmlTeacher(); ht.수업하기(); FlutterTeacher ft = new FlutterTeacher(); ft.수업하기(); } }
     
    결과
    입장하기 출석부르기 자바 강의하기 퇴장하기 입장하기 출석부르기 파이썬 강의하기 퇴장하기 입장하기 출석부르기 HTML 강의하기 퇴장하기 입장하기 출석부르기 플러터 강의하기 퇴장하기
     
     
    Share article
    Contents
    1. 템플릿 메소드 패턴 이해 코드

    silver

    RSS·Powered by Inblog