设计模式--模板方法模式

简介

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通俗的说的就是有很多相同的步骤的,在某一些地方可能有一些差别适合于这种模式。

模板方法的结构图也比较简单:
在这里插入图片描述

角色

模板模式中只有两个角色
抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。
具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。

简单实现

举例:为了使用新的软件,我们需要下载,安装,配置和运行。使用模板方法来实现。
1.创建抽象类(AbstractClass),定义抽象方法。

public abstract class Software {
    abstract void download();
    abstract void install();
    abstract void config();
    abstract void run();
    public final void useSoftware(){
        download();
        install();
        config();
        run();
    }

}

2.创建具体类(ConcreteClass)

public class SystemSoftware extends Software {
    @Override
    void download() {
        System.out.println("download system software ...");
    }

    @Override
    void install() {
        System.out.println("install system software ...");
    }

    @Override
    void config() {
        System.out.println("config system software ...");
    }

    @Override
    void run() {
        System.out.println("run system software ...");
    }
}
public class UserSoftware extends Software{
    @Override
    void download() {
        System.out.println("download user software ...");
    }

    @Override
    void install() {
        System.out.println("install user software ...");
    }

    @Override
    void config() {
        System.out.println("config user software ...");
    }

    @Override
    void run() {
        System.out.println("run user software ...");
    }
}

3.创建Client(Main验证)

public class TemplateMain {
    public static void main(String[] args) {
        Software software1 = new SystemSoftware();
        Software software2 = new UserSoftware();
        software1.useSoftware();
        software2.useSoftware();
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值