java模板设计模式 小白不懂打我系列

示例一(老司机开车-模板设计模式)

我们现在定义一个新司机和老司机类,新司机和老司机都有开车功能,开车的步骤都一样,只是驾驶姿势有点不同,新司机:开门,点火,双手紧握方向盘,刹车,熄火,老司机:开门,点火,双jiao紧握方向盘,刹车,熄火
我们可以将固定流程写到父类中,不同的地方就定义成抽象方法,让不同的子类去重写,代码如下:
理解:子类继承抽象类,子类重写抽象类中的抽象方法.

public class Test02 {
    public static void main(String[] args) {
        OldDriver oldDriver = new OldDriver();
        oldDriver.go();
        NewDriver newDriver = new NewDriver();
        newDriver.go();
    }

}

abstract class Driver {

    public void go() {
        System.out.println("开门");
        System.out.println("点火");
        //开车姿势不确定?定义为抽象方法
        zishi();
        System.out.println("刹车");
        System.out.println("熄火");
    }

    public abstract void zishi();

}

class NewDriver extends Driver{
    @Override
    public void zishi() {
        System.out.println("双手紧握方向盘");
    }
}

class OldDriver extends Driver{
    @Override
    public void zishi() {
        System.out.println("双脚操控方向盘");
    }
}

示例二(Servlet 源码微缩-模板设计模式)

public class Test03 {
    public static void main(String[] args) {
        MyService myService = new MyService();
        myService.service("post");
        myService.service("get");

    }
}

class MyService extends HttpServlet {
    @Override
    public void get() {
        System.out.println("get");
    }

    @Override
    public void post() {
        System.out.println("post");
    }
}

interface Servlet {
    void service(String method);
}


abstract class HttpServlet implements Servlet{

    public HttpServlet() {
    }

    @Override
    public void service(String method) {
        if("get".equals(method)){
            this.get();
        }else if("post".equals(method)){
            this.post();
        }
    }

    public abstract void get();

    public abstract void post();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值