[Java] Template Callback Pattern

7863 ワード


テンプレートコールバックとは?


テンプレートコールバック・モードを使用すると、変更されていない部分を使用可能にし、変更可能な部分を使用可能にカスタマイズできます.
クライアントは、テンプレートオブジェクトの方法にコールバックを実施することによって提供される.
テンプレート呼び出しメソッドは、プロシージャで指定されたコールバックメソッドを実行し、戻り値を使用して残りの操作を実行します.図から見るとそうです.

実装を試みる


ハンバーガーを作ろうテンプレートにはパンが含まれています.
私たちはパティをコールバックとして提供します.

Hamburgerクラス(テンプレート)


public class Hamburger {

    public void makeBurger(Patty patty){
        System.out.println("참깨빵");
        //콜백 메서드 호출
        String pattyName = patty.getPattyName();
		
        if(pattyName.equals("순쇠고기")){
            pattyName += " 패티두장";
        } else if(pattyName.equals("특별한 소스")){
            pattyName += " 양상추";
        }

        System.out.println(pattyName);

        System.out.println("참깨빵");
    }
}

Patty Interface(コールバック)


//함수형 인터페이스라는 것을 명시
@FunctionalInterface
public interface Patty {

    String getPattyName();
}

Cook class(クライアント)

public class Cook {

    public void cookBurger(){
        Hamburger hamburger = new Hamburger();
        hamburger.makeBurger(new Patty() {
            @Override
            public String getPattyName() {
                return "순쇠고기";
            }
        });
        // 람다식을 이용해 ()-> "순쇠고기"; 이런식으로 더 간결하게 작성할 수 잇다.
    }
}

Test

public class test {
    public static void main(String[] args) {
        Cook cook = new Cook();
        cook.cookBurger();
    }
//    결과)
//    참깨빵
//    순쇠고기 패티두장
//    참깨빵
}
スプリングのJdbcTemplateは実際にこのパターンを適用して設計されているそうです.
JdbcTemplateは
Connectionなどのリソースを取得します.
クエリーの実行(コールバック)
リソースを再返却します.