您的位置:首页 > 编程语言 > Java开发

JAVA设计模式之模板方式

2017-09-09 15:46 204 查看
什么是模版方式(百度): 模板方法模式是基于继承的代码复用基本技术,模板方法模式的结构和用法也是面向对象设计的核心之一。在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中。 在模板方法模式中,我们需要准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来让子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现,这就是模板方法模式的用意。模板方法模式体现了面向对象的诸多重要思想,是一种使用频率较高的模式。

下面以银行服务为例子,更能清楚的明白,我们去银行,有时候去取款,有时候去存款,有时候去抢钱哦!哈哈,但是实现这些目的的时候,我们都是需要先去挂号,然后去实现相应的业务,然后就是评价一下服务的怎么样,这些业务实现中,挂号和最后的评价都是一样的,只有中间的业务方法不同,所以我们可以使用模版方式来实现,简洁明了。以下代码,能为大家更明了的理解什么是模版方式。

模拟银行取款等操作

package com.imust.templateMethod;

/**
* 模拟银行取款等操作
* @author  Zachary (为上帝所心仪的人)
* @date    2017年9月9日
* @project shejimoshi
* @package com.imust.templateMethod
*/
public abstract class BankTemplateMethod {

//具体方法
public void takeNumber(){
System.out.println("取号排队");
}

public abstract void transact();//办理具体的业务,钩子方法

public void evaluate(){
System.out.println("反馈评分");
}

public final void process(){

this.takeNumber();
this.transact();
this.evaluate();
}

}


测试类

package com.imust.templateMethod;

public class Client {

public static void main(String[] args) {
BankTemplateMethod btm = new DrawMoney();
btm.process();

//匿名内部类
BankTemplateMethod btm2 = new BankTemplateMethod() {

@Override
public void transact() {
System.out.println("我要存钱");
}
};
btm2.process();

BankTemplateMethod btm3 = new BankTemplateMethod() {

@Override
public void transact() {
System.out.println("我要理财");
}
};
btm3.process();

}

}
class DrawMoney extends BankTemplateMethod{

@Override
public void transact() {
System.out.println("我要取款!!!");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息