码迷,mamicode.com
首页 > 编程语言 > 详细

大话设计模式_模板方法模式(Java代码)

时间:2014-06-10 00:07:49      阅读:411      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

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

简单描述:多个类的行为是差不多的,只是某些局部不一样,则交由父类中抽象出这些子类中相同的部分,父类中定义出不同的部分的接口(方法),这些不同部分的方法则由子类去实现,通过多态,实现代码的重用

大话设计模式中的截图:

bubuko.com,布布扣

例子代码:

AbstractClass类:

bubuko.com,布布扣
 1 package com.longsheng.templatemethod;
 2 
 3 public abstract class AbstractClass {
 4 
 5     /**
 6      * 这个方法主要是抽象出所有子类中都一样的过程,具体的不同则交由子类实现
 7      */
 8     public final void sameMethod() {
 9         concreteMethodA();
10         System.out.println("父类中的方法");
11         concreteMethodB();
12     }
13     
14     public abstract void concreteMethodA();
15     
16     public abstract void concreteMethodB();
17     
18 }
bubuko.com,布布扣

具体类ConcreteClassA类:

bubuko.com,布布扣
 1 package com.longsheng.templatemethod;
 2 
 3 public class ConcreteClassA extends AbstractClass {
 4 
 5     @Override
 6     public void concreteMethodA() {
 7         System.out.println("ConcreteClassA--concreteMethodA");
 8     }
 9 
10     @Override
11     public void concreteMethodB() {
12         System.out.println("ConcreteClassA--concreteMethodB");
13     }
14 
15 }
bubuko.com,布布扣

具体类ConcreteClassB类:

bubuko.com,布布扣
 1 package com.longsheng.templatemethod;
 2 
 3 public class ConcreteClassB extends AbstractClass {
 4 
 5     @Override
 6     public void concreteMethodA() {
 7         System.out.println("ConcreteClassB--concreteMethodA");
 8     }
 9 
10     @Override
11     public void concreteMethodB() {
12         System.out.println("ConcreteClassB--concreteMethodB");
13     }
14 
15 }
bubuko.com,布布扣

客户端代码:

bubuko.com,布布扣
 1 package com.longsheng.templatemethod;
 2 
 3 public class Client {
 4 
 5     public static void main(String[] args) {
 6         AbstractClass mAbstractClass = null; 
 7         mAbstractClass = new ConcreteClassA();
 8         mAbstractClass.sameMethod();
 9         mAbstractClass = new ConcreteClassB();
10         mAbstractClass.sameMethod();
11     }
12 
13 }
bubuko.com,布布扣

运行结果:

bubuko.com,布布扣
1 ConcreteClassA--concreteMethodA
2 父类中的方法
3 ConcreteClassA--concreteMethodB
4 ConcreteClassB--concreteMethodA
5 父类中的方法
6 ConcreteClassB--concreteMethodB
bubuko.com,布布扣

有时候一个过程由一系列步骤构成,从高层次上看,这个过程是相同的,只是有些步骤的实现可能不同,这时候就应该考虑使用模板方法模式了。

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

大话设计模式_模板方法模式(Java代码),布布扣,bubuko.com

大话设计模式_模板方法模式(Java代码)

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/creasylai19/p/3773751.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!