读书人

常见设计形式之【模板模式】

发布时间: 2012-09-10 22:20:13 作者: rapoo

常见设计模式之【模板模式】 .

模板模式Template概述:

1、定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中。

2、抽象模板角色:

①定义了一个或者多个抽象操作,以便让其子类实现

②定义并实现一个模板方法。

3、具体模板角色:

①实现父类所定义的一个或者多个抽象方法

②可以有任意多个具体模板角色,实现同一个抽象模板角色

③每一个具体模板角色都可以给出这些抽象方法的不同实现。

....

其实我不太喜欢把这些东西摆上去。来上传一个我简写的demo

package Template;/** *@Description: 模板模式 *@author Potter    *@date 2012-8-16 下午11:04:38 *@version V1.0    */public class App {public static void main(String[] args) {Pillar pillar=new CirclePillar(10, 3);System.out.println("pillar's V="+pillar.getBulk());}}


柱子(圆形柱和矩形柱)抽象类

package Template;/** *@Description: 柱子(圆形柱和矩形柱)抽象类 *@author Potter    *@date 2012-8-16 下午10:50:13 *@version V1.0    */public abstract class Pillar{private float hight;public Pillar(float hight) {this.hight = hight;}/**获得体积**/public double getBulk(){return getUnderArea()*hight;}protected abstract float getUnderArea();}


圆柱类:

package Template;/** *@Description: 圆柱 *@author Potter    *@date 2012-8-16 下午10:57:21 *@version V1.0    */public class CirclePillar extends Pillar {private float r;public CirclePillar(float hight,float r){super(hight);this.r=r;}@Overridepublic float getUnderArea() {// TODO Auto-generated method stubreturn  (float) (Math.PI*r*r);}}

矩形柱类:

package Template;/** *@Description:矩形柱 *@author Potter    *@date 2012-8-16 下午11:01:52 *@version V1.0    */public class RectPillar extends Pillar {private float length;private float width;public RectPillar(float hight,float length,float width) {super(hight);this.length=length;this.width=width;}@Overridepublic float getUnderArea() {return length*width;}}


打印结果:

pillar's V=282.74334716796875

呵呵~ 简单吧~

读书人网 >软件开发

热点推荐