博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Chapter 10 模版方法模式
阅读量:4342 次
发布时间:2019-06-07

本文共 1274 字,大约阅读时间需要 4 分钟。

我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模版模式来处理。

模版方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

模版方法通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势,相当于提供了一个很好的代码复用平台。

当不变和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模版方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。

代码如下:

package xiao;

class Test{

public void question(){
question1();
question2();
question3();
}
public void question1(){
System.out.println("your Q1 answer is"+this.answer1());
}
public void question2(){
System.out.println("your Q1 answer is"+this.answer2());
}
public void question3(){
System.out.println("your Q1 answer is"+this.answer3());
}
protected String answer1(){
return "";
}
protected String answer2(){
return "";
}
protected String answer3(){
return "";
}
}
class TestA extends Test{
protected String answer1(){
return " A";
}
protected String answer2(){
return " C";
}
protected String answer3(){
return " D";
}
}
class TestB extends Test{
protected String answer1(){
return " B";
}
protected String answer2(){
return " A";
}
protected String answer3(){
return " D";
}
}
public class Hello {

public static void main(String[] args) throws Exception{

Test a = new TestA();
a.question();
Test b = new TestB();
b.question();
}
}

转载于:https://www.cnblogs.com/tuifeideyouran/p/3733932.html

你可能感兴趣的文章
valgrind检测linux程序内存泄露
查看>>
“==”运算符与equals()
查看>>
单工、半双工和全双工的定义
查看>>
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>
如何使用mysql
查看>>
linux下wc命令详解
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>
python的字符串内建函数
查看>>
Spring - DI
查看>>
微软自己的官网介绍 SSL 参数相关
查看>>
Composite UI Application Block (CAB) 概念和术语
查看>>
ajax跨域,携带cookie
查看>>
阶段3 2.Spring_01.Spring框架简介_03.spring概述
查看>>