第十话-模板方法模式

一个mo子里刻出来的?NO,NO,NO应该是一个mu子里立刻出来的。今天看了模板方法模式,一起学习了。
一、什么是模板方法模式?
定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
请大家细细品味定义,模板方法模式,父类只考虑骨架,子类只考虑血肉。有一些不必父类做的事情要放到子类中去。
二、模板方法模式有哪些应用?
应用太广泛了,也许你已经悄悄的用了N年了。因为此模式可以封装不变部分,扩展可变部分。所以,我们要提取公共部分代码,便于维护。你想到的基本都可以使用此模式。

三、一个小例子


父类(抽象类;包括基本模板方法和抽象方法;基本模板方法是骨架;抽象方法是留给子类实现的;)
TestPaper.java
public abstract class TestPaper {
public void question1(){
System.out.println("问题1:请问世界上最大的湖是什么湖?");
System.out.println("答案1:"+answer1());
}

public void question2(){
System.out.println("问题2:你所知道的最大数?");
System.out.println("答案2:"+answer2());
}

protected abstract String answer1();
protected abstract String answer2();

}
具体子类
Student1.java
public class Student1 extends TestPaper {


@Override
protected String answer1() {
// TODO Auto-generated method stub
return "苏必利尔湖";
}


@Override
protected String answer2() {
// TODO Auto-generated method stub
return "3";
}


}


Student2.java


public class Student2 extends TestPaper {


@Override
protected String answer1() {
// TODO Auto-generated method stub
return "里海";
}


@Override
protected String answer2() {
// TODO Auto-generated method stub
return "1";
}


}


测试主类:


public class Main {


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestPaper paper1 = new Student1();
TestPaper paper2 = new Student2();
System.out.println("学生1的试卷:");
paper1.question1();
paper1.question2();
System.out.println("学生2的试卷:");
paper2.question1();
paper2.question2();

}


}


四、小结
忘了是在哪个大牛博客里看到的了,如果你只想学习一个设计模式,那就学习模板方法模式吧。
模板方法模式很简单,但实用性强,并且使用广泛。所以,学习吧。嘿嘿。下一话:迪米特法则
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬李先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值