分享

17. 模板模式

 黎可图书馆 2013-09-11
一. 定义
Template Method(模板方法模式):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

二. 角色
抽象模板(AbstractTemplate)角色:定义一个或多个抽象操作,以便让子类实现。定义并实现一个模板方法。
具体模板(ConcreteTemplate)角色:实现父类所定义的一个或多个抽象方法。每一个抽象模板角色可对应多个具体模板角色。

三. 实现
每个人都经历着生老病死,但是不同的人的人生也是不同的,所以这里定义一个人作为抽象模板角色,而不同的人则是具体模板角色。

Test.java
public class Test {
public static void main(String[] args) {
Human jobs = new GreatMan();
Human sb = new PoolMan();
jobs.life();
sb.life();
}
}
测试类,这里有一个成功的人生和一个失败的人生。

Human.java
public abstract class Human {
public void life(){
born();
study();
work();
dead();
}
public abstract void born();
public abstract void study();
public abstract void work();
public abstract void dead();
}
抽象模板角色,有出生,学习,工作和死亡四个方法,还有一个人生的模板方法。

GreatMan.java
public class GreatMan extends Human {

@Override
public void born() {
System.out.println("生在贫困家庭");
}

@Override
public void study() {
System.out.println("学习努力用功,成绩优异");
}

@Override
public void work() {
System.out.println("找到一份好工作,家庭事业稳定");
}

@Override
public void dead() {
System.out.println("光荣的死去");
}

}
伟人类,实现了抽象模板类的抽象方法。

PoolMan.java
public class PoolMan extends Human {

@Override
public void born() {
System.out.println("出生在达官显富家中");
}

@Override
public void study() {
System.out.println("仗着家中财力雄厚,不好好学习");
}

@Override
public void work() {
System.out.println("不去工作,坐吃山空");
}

@Override
public void dead() {
System.out.println("悲凉的死去");
}

}
失败的人生,同上。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多