JAVA鈎子方法+模板方法


模板方法:

寫一個抽象類,這個抽象類有多個抽象方法,里面設立一個模板方法,這個模板方法也可以稱之為模板算法,設立不同方法的執行順序,封裝業務流程,暴露出去;

模板方法模式的特點很好總結,它將一般性的可復用的行為由基類固化,而把特殊化的行為交由具體的子類來實現。具體來說:

  1. 子類通常不關心全局(比如整個流程、提綱、步驟),而只負責”填空“;”填空“通過實現或重寫父類的方法來實現。
  2. 從父類角度,全局性的規范約束掌握在自己手中(完形填空),具體來說通過模板方法來約束,從而能夠盡量簡化子類的復雜度。父類並不一定是抽象類(聚合接口,然后模板方法里去組織接口方法,延遲實現),模板方法也並不一定是抽象方法(子類重寫父類)。

 

鈎子方法:尋找掛載點,比如上面的模板方法,里面的具體方法實現,是暴露給子類,或成員的,子類實現會影響父類的模板算法

簡單鈎子eg:

public class PlayGame {
    public static void playGame(Game game){
        System.out.println("打開機器");
        System.out.println("打開外掛");
        System.out.println("加速器...");
        //開始游戲
        game.play();//鈎子
        System.out.println("存檔...");
    }
    public static void main(String[] args){
        playGame(new LOL());
    }
}


class LOL implements Game{
    public void play(){
        System.out.println("開始 LOL ing");
    }
}
class WOW implements Game{
    public void play(){
        System.out.println("開始 WOW ing");
    }
}


/***
 * 創建一個Game接口
 */
public interface Game {
    void play();
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM