设计模式之模版方法模式

模版方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中具体实现细节,模版方法使得子类可以

不改变一个算法的结构即可重定义该算法的某些特定步骤。

1.模版方法将若干个方法集成到一个方法中,以便形成一个解决问题的算法骨架。模版方法在接口或抽象类中定义,

其调用的方法在接口或抽象类也有定义,在子类中进行重写。

2.可以通过定义模版方法给出成熟的算法步骤,同时又不限制步骤的细节,具体模版实现算法细节不会改变整个

算法的骨架。


实现一,使用接口:

public interface editModule{
public void step1();
public void step2();
public void step3();
public default void editStep(){//jdk8以后的新特性,使用default关键字修饰的方法可以有方法体
step1();
step2();
step3();
}
}
public class module1 implements editModule{
public void step1(){
System.out.println("模块1 执行步骤一");
}
public void step2(){
System.out.println("模块1 执行步骤二");
}
public void step3(){
System.out.println("模块1 执行步骤三");
}
}
public class module2 implements editModule{
public void step1(){
System.out.println("模块2 执行步骤一");
}
public void step2(){
System.out.println("模块2 执行步骤二");
}
public void step3(){
System.out.println("模块2 执行步骤三");
}
}
public class runApp{
public static void main(String args[]){
editModule eM=new module1();
eM.editStep();
eM=new module2();
eM.editStep();
}
}

输出:


模块1 执行步骤一
模块1 执行步骤二
模块1 执行步骤三
模块2 执行步骤一
模块2 执行步骤二
模块2 执行步骤三

实现二,使用抽象类:

public abstract class editModule{
public abstract void step1();
public abstract void step2();
public abstract void step3();
public void editStep(){//可用final修饰
step1();
step2();
step3();
}
}
public class module1 extends editModule{
public void step1(){
System.out.println("模块1 执行步骤一");
}
public void step2(){
System.out.println("模块1 执行步骤二");
}
public void step3(){
System.out.println("模块1 执行步骤三");
}
}
public class module2 extends editModule{
public void step1(){
System.out.println("模块2 执行步骤一");
}
public void step2(){
System.out.println("模块2 执行步骤二");
}
public void step3(){
System.out.println("模块2 执行步骤三");
}
}
public class runApp{
public static void main(String args[]){
editModule eM=new module1();
eM.editStep();
eM=new module2();
eM.editStep();
}
}

输出:

模块1 执行步骤一
模块1 执行步骤二
模块1 执行步骤三
模块2 执行步骤一
模块2 执行步骤二
模块2 执行步骤三


参考自 《java面向对象程序设计——实验指导与习题解答(张跃平等 著)》








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值