模板模式

一、前言

  以前只知道抽象类与接口的区别,而不知道为什么会有这样的区别,看了模板模式的例子算是知其所以然了。

二、结构图

  

 

三、应用场景

  比如说生成手机,生产的流程是相同的,但是具体的细节可能有所不同(比如手机的颜色,手机的类别,手机的大小等等)。

package TemplateDemo;

/**

* 这是一个抽象的模板类

* */

abstract class AbstractClass {

     //定义一个模板方法来控制生产手机的流程

    public void makeMobile(){//TemplateMethod

       //首先生产手机体(模板方法自己完成)

       System.out.println("生产了一个手机body");

       this.makeDifferentFunction();

       this.makeDifferentColor();

       this.makeDifferentType();

       System.out.println("一部手机制作完成");

       //以上模板已经规定好了

    }

    //定义抽象的方法来完成不同的生产细节(不同功能的手机)

    protected abstract void makeDifferentFunction();

    //定义抽象的方法来完成不同的生产细节(不同颜色的手机)

    protected abstract void makeDifferentColor();

    //定义抽象的方法来完成不同的生产细节(不同类型的手机)

    protected abstract void makeDifferentType();

}

/**

* 创建真是的实现类来实现具体的生产细节

* */

class ConcreteClass extends AbstractClass{

    //实现父类中的抽象的方法

    protected void makeDifferentColor() {

       System.out.println("给该手机的颜色涂成蓝色");

    }

    protected void makeDifferentFunction() {

       System.out.println("给该手机实现看MP4的功能");

    }

    protected void makeDifferentType() {

        System.out.println("给该手机制作成翻盖的");   

    }

}

//写测试类

public class TestTemplate{

    public static void main(String args[]){

       AbstractClass ac = new ConcreteClass();//子类的对象付给父类

       ac.makeMobile();//制作手机

       //制作不同的手机只是修改子类就可以了

    }

 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值