销售型企业网站有哪些,网站注册的账号怎么注销,南昌英文网站建设,筑梦网站建设类型#xff1a;行为型模式
实现原理#xff1a;一个抽象类公开定义了执行它的方法的方式/模板#xff0c;它的子类可以按需要重写方法实现#xff0c;但调用将以抽象类中定义的方式进行
意图#xff1a;使子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。…类型行为型模式
实现原理一个抽象类公开定义了执行它的方法的方式/模板它的子类可以按需要重写方法实现但调用将以抽象类中定义的方式进行
意图使子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
主要解决一些通用却在每一个子类都重写了的方法造成的冗余
解决方法将这些通用算法抽象出来。
何时使用有一些通用的方法。
实现核心在抽象类实现其他步骤在子类实现。
应用实例 盖楼需要地基、水管等
优点 1、封装不变部分扩展可变部分。 2、提取公共代码便于维护。 3、行为由父类控制子类实现。
缺点每一个不同的实现都需要一个子类来实现导致类的个数增加使得系统膨胀。
使用场景 1、多个子类共有的逻辑相同的方法 2、重要的、复杂的方法可以考虑作为模板方法。
实现
步骤 1
创建一个抽象类它的模板方法被设置为 final。Game.java
public abstract class Game {abstract void initialize();abstract void startPlay();abstract void endPlay();//模板public final void play(){//初始化游戏initialize();//开始游戏startPlay();//结束游戏endPlay();}
}
步骤 2
创建扩展了上述类的实体类。Cricket.java
public class Cricket extends Game {Overridevoid endPlay() {System.out.println(Cricket Game Finished!);}Overridevoid initialize() {System.out.println(Cricket Game Initialized! Start playing.);}Overridevoid startPlay() {System.out.println(Cricket Game Started. Enjoy the game!);}
}
Football.java
public class Football extends Game {Overridevoid endPlay() {System.out.println(Football Game Finished!);}Overridevoid initialize() {System.out.println(Football Game Initialized! Start playing.);}Overridevoid startPlay() {System.out.println(Football Game Started. Enjoy the game!);}
}
步骤 3
使用 Game 的模板方法 play() 来演示游戏的定义方式。TemplatePatternDemo.java
public class TemplatePatternDemo {public static void main(String[] args) {Game game new Cricket();game.play();System.out.println();game new Football();game.play(); }
}
步骤 4
执行程序输出结果Cricket Game Initialized! Start playing.
Cricket Game Started. Enjoy the game!
Cricket Game Finished!Football Game Initialized! Start playing.
Football Game Started. Enjoy the game!
Football Game Finished!这段代码演示了模板方法模式。以下是代码的逐步解释步骤 1创建一个抽象类Game其中包含了三个抽象方法initialize()、startPlay()和endPlay()以及一个被声明为final的模板方法play()。模板方法play()定义了游戏的整体框架包括初始化游戏、开始游戏和结束游戏的流程。步骤 2创建两个实体类Cricket和Football它们分别扩展了Game类并实现了抽象方法。在每个实体类中重写了initialize()、startPlay()和endPlay()方法来定义具体的游戏行为。步骤 3使用TemplatePatternDemo类来演示游戏的定义方式。在main()方法中创建了一个Cricket对象和一个Football对象并通过调用它们的play()方法来演示游戏的整个流程。步骤 4执行程序并观察输出。它将显示先后执行的游戏流程包括初始化游戏、开始游戏和结束游戏的消息。输出结果为Cricket Game Initialized! Start playing.
Cricket Game Started. Enjoy the game!
Cricket Game Finished!Football Game Initialized! Start playing.
Football Game Started. Enjoy the game!
Football Game Finished!这段代码演示了模板方法模式它通过定义一个抽象类并在其中封装了一个模板方法在子类中实现具体行为从而实现了一种固定的流程。这样可以保持流程统一同时也允许子类根据需要改变特定步骤的实现。