模板模式(Template)

模板方法模式是一种设计模式,它在抽象基类中定义了一套操作流程,并允许子类在不改变整体结构的情况下,对部分步骤进行重写。在示例中,`PM`类作为抽象基类,定义了瀑布模型的开发流程,而`HRProject`是具体实现类,实现了各个步骤。这种模式使得代码结构清晰,易于扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模板模式说明

        模板是对多种事物的结构、形式、行为的模式化总结,而模板方法模式(Template Method)则是对一系列类行为(方法)的模式化

        基类定义了一套模板(不可变),供子类继承,子类可以扩展(可变),丰富自己的业务场景

        当然,对于基类模板中的步骤方法并不是必须要用抽象方法,而是完全可以用实体方法去实现一些通用的操作,灵活设计,如果子类需要个性化就对其进行重写变更,不需要就直接继承。根据场景进行适当的变通,才能对设计模式更灵活、更恰当的运用。

        模板方法模式巧妙地结合了抽象类虚部方法与实部方法,分别定义了可变部分与不变部分,其中前者留给子类去实现,保证了系统的可扩展性;而后者则包含一系列对前者的逻辑调用,为子类提供了一种固有的应用指导规范,从而达到虚中带实、虚实结合的状态。

   

模板方法模式的各角色定义如下

● AbstractClass(抽象基类):定义出原始操作步骤的抽象方法(primitiveOperation)以供子类实现,并作为在模板方法中被调用的一个步骤。此外还实现了不可重写的模板方法,其可将所有原始操作组织起来成为一个框架或者平台。

● ConcreteClassA、ConcreteClassB(实现类A、实现类B):继承自抽象基类并且对所有的原始操作进行分步实现,可以有多种实现以呈现每个步骤的多样性。

示例代码

package com.azure.design.template;

/**
 * 瀑布模型模版抽象类
 */
public abstract class PM {

    public abstract String analyze (); //需求分析

    public abstract String design (String projec); //软件设计

    public abstract String develop (String projec); //代码开发

    public abstract boolean test (String project); // 测试

    public abstract void release (String project); // 发布

    protected final void kickoff () {

        String requirement = analyze ();

        String designCode = design (requirement);

        do{

            designCode = develop(designCode);

        } while(!test(designCode));        //如果测试失败则需修改

        release (designCode);
    }
}
package com.azure.design.template;

public class HRProject extends PM{
    @Override
    public String analyze() {
        System.out.println("需求分析");
        return "人力项目完成需求分析";
    }

    @Override
    public String design(String projec) {
        System.out.println("程序设计");
        return projec;
    }

    @Override
    public String develop(String projec) {
        System.out.println("程序开发");
        return projec;
    }

    @Override
    public boolean test(String project) {
        System.out.println("程序测试");
        return true;
    }

    @Override
    public void release(String project) {
        System.out.println("程序发布");
        System.out.println("项目验证");
        System.out.println("================项目上线成功==================");
    }
}

资料引用

刘韬《秒懂设计模式》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值