Java 模板模式

模板模式定义了一种算法的骨架,并将部分步骤延迟到子类中,允许子类不改变算法结构即可重定义特定步骤。核心在于父类定义步骤,子类实现细节。优点包括封装不变部分、提取公共代码,但可能导致类数量增加。常见应用场景如餐饮下单流程,不同店铺只需实现食物部分。
摘要由CSDN通过智能技术生成

模板模式的定义:

       它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现,这样子类才可以不改变算法结构的前提下重新定义改算法的某些特定步骤。

模板模式的核心:

       处理的步骤父类中早已定义好,具体的实现延迟到子类中去完成。

模板方法的角色:

       1.抽象模板角色:它一般是一个抽象类或者接口,它抽象出操作算法骨架。

       2.具体抽象模板角色:它实现了抽象模板角色的方法,它是操作算法骨架业务的具体化。

模板方法的优点:

        1.封装不变部分,扩展可变部分。

         2.提取了公共代码,便于维护。

          3.行为由父类控制,子类实现。

模板方法的缺点:

         1.每一个不同的实现都需要一个子类来实现,这样导致类的个数增加。

模板模式的使用场景:      

          1.实现一个算法时,基本步骤很固定,但是某些部分易变,易变的部分可以抽离出来,由子类实现。

 

平常我们在面馆是下单,吃面,付钱,在烧烤店,下单,吃烧烤,付钱。在面馆和烧烤店,我们就吃的食物不一样,所以我们下面可以用这个来演示我们的模板模式。

/**
 * 抽象模板角色
 * @author Administrator
 */

public abstract class Template {
    public void oreder(){
        Log.d("templateTest",
模板模式是一种行为设计模式,它定义了一个操作中的算法的骨架,将一些步骤延迟到子类中。模板模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。在Java中,模板模式通常由一个抽象类和一个或多个实现类组成。抽象类中定义了一个模板方法,该方法包含了算法的骨架,以及一些抽象方法,这些抽象方法由子类实现,以完成算法中的具体步骤。 以下是Java模板模式的一个示例: ```java // 抽象类 abstract class Game { abstract void initialize(); abstract void startPlay(); abstract void endPlay(); // 模板方法 public final void play(){ // 初始化游戏 initialize(); // 开始游戏 startPlay(); // 结束游戏 endPlay(); } } // 实现类1 class Cricket extends Game { @Override void endPlay() { System.out.println("Cricket Game Finished!"); } @Override void initialize() { System.out.println("Cricket Game Initialized! Start playing."); } @Override void startPlay() { System.out.println("Cricket Game Started. Enjoy the game!"); } } // 实现类2 class Football extends Game { @Override void endPlay() { System.out.println("Football Game Finished!"); } @Override void initialize() { System.out.println("Football Game Initialized! Start playing."); } @Override void startPlay() { System.out.println("Football Game Started. Enjoy the game!"); } } // 演示类 public class TemplatePatternDemo { public static void main(String[] args) { Game game = new Cricket(); game.play(); System.out.println(); game = new Football(); game.play(); } } ``` 输出结果为: ``` 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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值