网站建站建设联系电话,网站开发有很多种吗,wordpress 页面顺序,做网站一般多钱模板模式
模板模式#xff0c;定义一个操作中的算法的骨架#xff0c;而将一些步骤延迟到子类中#xff0c;模板方法使得子类可以不改变一个算法的结构#xff0c;就可以重定义该算法的某些特定步骤
一般是定义一个抽象类#xff0c;有抽象方法#xff0c;有骨架方法定义一个操作中的算法的骨架而将一些步骤延迟到子类中模板方法使得子类可以不改变一个算法的结构就可以重定义该算法的某些特定步骤
一般是定义一个抽象类有抽象方法有骨架方法骨架方法中会定义这几个抽象方法的调用顺序。 然后再定义多个实现类继承这个抽象类那么就得覆盖父类的抽象方法那么每个实现类调用骨架方法最终的结构就是按照父类中预先定义好的调用顺序去调用自己实现的各个抽象方法。这就是效果
举个网上的例子我觉得写的挺通俗易懂的
/***这个抽象类有三个抽象方法(initGame,startGame,endGame)*一个骨架方法playGame*骨架方法中主要就是定义了三个抽象方法的执行顺序*/
public abstract class GameTemplate {/** 初始化游戏 */abstract void initGame();/** 开始游戏 */abstract void startGame();/** 结束游戏 */abstract void endGame();public final void playGame() {initGame();startGame();endGame();}
}
/*** 亡者农药分别实现三个抽象方法自己具体实现*/
public class GloryOfKings extends GameTemplate {Overridevoid initGame() {System.out.println(初始化亡者农药);}Overridevoid startGame() {System.out.println(开始亡者农药);}Overridevoid endGame() {System.out.println(结束亡者农药);}
}
/*** LOL也分别实现三个抽象方法自己具体实现*/
public class LOL extends GameTemplate {Overridevoid initGame() {System.out.println(初始化LOL);}Overridevoid startGame() {System.out.println(开始LOL);}Overridevoid endGame() {System.out.println(结束LOL);}
}
/*** 测试分别拿到两个子类去调用骨架方法playGame* 那么最终的结果就是两个子类各自实现的三个抽象方法* 都会按照父抽象类中骨架定义的执行顺序依次执行* * 子类在实现的过程中没有必要定义这些执行顺序因为在父类中都做好了*/
public static void main(String[] args) {GameTemplate gloryOfKings new GloryOfKings();gloryOfKings.playGame();GameTemplate lol new LOL();lol.playGame();
}