--设计模式--

模板模式

一、定义:模板模式又名模板方法,父类定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。

例如:一个互联网产品开发过程中、有需求调研、原型输出、代码开发、测试、结项怎么几部分,所以我们可以将这几大步骤放到父类中定义,但是具体如何调研,如何开发,测试则是可以放到子类实现,

二、优缺点

优点:1、封装不变部分,扩展可变部分。

           2、提取公共代码、便于维护。

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

缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,是的系统更加庞大。

三、应用场景

1、算法的整体步骤很固定,但其中个别部分易变时,这时候可以使用模板方法模式,将容易变的部分抽象出来,供子类实现。

2、当多个子类存在公共的行为时,可以将其提取出来并集中到一个公共父类中以避免代码重复。

四、代码结构

package temolate;
 
 * @Description: 抽象模板父类

 */
public abstract class AbstractTemplateClass {
 
    /**父类中定义好方法架构*/
    public void templateMethod(){
        operation1();
        operation2();
    }
 
    protected abstract void operation1();
 
    protected abstract void operation2();
 
}
 
package temolate;
 
/**
 * @Description: 实现子类

 */
public class ConcreteTemplateClassA extends AbstractTemplateClass{
    @Override
    protected void operation1() {
        System.out.println("先执行这个aaaaaaaaaaa");
    }
 
    @Override
    protected void operation2() {
        System.out.println("后执行这个bbbbbbbbbbbbbbbb");
    }
}
 
package temolate;

 * @Description: 实现子类

 */
public class ConcreteTemplateClassB extends AbstractTemplateClass{
    @Override
    protected void operation1() {
        System.out.println("先执行这个cccccccccccccccccccc");
    }
 
    @Override
    protected void operation2() {
        System.out.println("后执行这个ddddddddddddddddddddddddddd");
    }
}
 
package temolate;

public class DemoClient {
    public static void main(String[] args) {
 
        AbstractTemplateClass abstractTemplateClass = new ConcreteTemplateClassA();
        abstractTemplateClass.templateMethod();
 
        abstractTemplateClass = new ConcreteTemplateClassB();
        abstractTemplateClass.templateMethod();
    }
 
}

执行结果:aaaaaaaaaaaa

                  bbbbbbbbbb

                 cccccccccc

                 dddddddddddddddddd

五、总结

从代码结构和结果就可以看出来,模板模式主要就是定义了算法的步骤,无论你子类如何实现都必须按照我父类定义好的步骤来实现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值