`
lvwenwen
  • 浏览: 935777 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

java设计模式之模板方法模式(行为模式 )

阅读更多
package com.createtype.desginpatterns.templatemethod;

/**
 * @author cbf4Life cbf4life@126.com I'm glad to share my knowledge with you
 *         all. Hummer Model是悍马车辆模型的意思,不是悍马美女车模
 */
public abstract class HummerModel {
	/*
	 * 首先,这个模型要能够被发动起来,别管是手摇发动,还是电力发动,反正 是要能够发动起来,那这个实现要在实现类里了
	 */
	protected abstract void start();

	// 能发动,那还要能停下来,那才是真本事
	protected abstract void stop();

	// 喇叭会出声音,是滴滴叫,还是哔哔叫
	protected abstract void alarm();

	// 引擎会轰隆隆的响,不响那是假的
	protected abstract void engineBoom();

	// 那模型应该会跑吧,别管是人推的,还是电力驱动,总之要会跑
	final public void run() {
		// 先发动汽车
		this.start();
		// 引擎开始轰鸣
		this.engineBoom();
		// 喇嘛想让它响就响,不想让它响就不响
		if (this.isAlarm()) {
			this.alarm();
		}
		// 到达目的地就停车
		this.stop();
	}

	// 钩子方法,默认喇叭是会响的
	protected boolean isAlarm() {
		return true;
	}
}
package com.createtype.desginpatterns.templatemethod;

/**
 * @author cbf4Life cbf4life@126.com I'm glad to share my knowledge with you
 *         all. H1和H2有什么差别,还真不知道,真没接触过悍马
 */
public class HummerH2Model extends HummerModel {
	@Override
	protected void alarm() {
		System.out.println("悍马H2鸣笛...");
	}

	@Override
	protected void engineBoom() {
		System.out.println("悍马H2引擎声音是这样在...");
	}

	@Override
	protected void start() {
		System.out.println("悍马H2发动...");
	}

	@Override
	protected void stop() {
		System.out.println("悍马H1停车...");
	}

	// 默认没有喇叭的
	@Override
	protected boolean isAlarm() {
		return false;
	}
}
package com.createtype.desginpatterns.templatemethod;

/**
 * @author cbf4Life cbf4life@126.com I'm glad to share my knowledge with you
 *         all. 悍马车是每个越野者的最爱,其中H1最接近军用系列
 */
public class HummerH1Model extends HummerModel {
	private boolean alarmFlag = true; // 是否要响喇叭

	@Override
	protected void alarm() {
		System.out.println("悍马H1鸣笛...");
	}

	@Override
	protected void engineBoom() {
		System.out.println("悍马H1引擎声音是这样在...");
	}

	@Override
	protected void start() {
		System.out.println("悍马H1发动...");
	}

	@Override
	protected void stop() {
		System.out.println("悍马H1停车...");
	}

	@Override
	protected boolean isAlarm() {
		return this.alarmFlag;
	}
	// 要不要响喇叭,是有客户的来决定的
	public void setAlarm(boolean isAlarm) {
		this.alarmFlag = isAlarm;
	}
}
package com.createtype.desginpatterns.templatemethod;

/**
 * @author cbf4Life cbf4life@126.com I'm glad to share my knowledge with you
 *         all. 客户开始使用这个模型
 */
public class Client {
	public static void main(String[] args) {
		// 客户开着H1型号,出去遛弯了
		HummerH1Model h1 = new HummerH1Model();
		h1.setAlarm(false);
		h1.run(); // 汽车跑起来了;
		// 客户开H2型号,出去玩耍了
//		HummerModel h2 = new HummerH2Model();
//		h2.run();
	}
}

 文章链接:http://sunnylocus.iteye.com/blog/216500javascript:mctmp(0);
模板方法模式:
1.那我们总结一下模板方法模式,模板方法模式就是在模板方法中按照一个的规则和顺序调用基本方法,
具体到我们上面那个例子就是run 方法按照规定的顺序(先调用start,然后再调用engineBoom,再调用
alarm,最后调用stop)调用本类的其他方法,并且由isAlarm 方法的返回值确定run 中的执行顺序变更,
2.其中TemplateMethod 就是模板方法,operation1 和operation2 就是基本方法,模板方法是通过汇总
或排序基本方法而产生的结果集。
3.作为模板的方法定义在父类(父类为抽象类),而方法定义使用抽象方法,实现抽象方法的是子类,要在子类实现方法,
才能决定具体的操作。如果在不同的子类执行不同实现就可以发展出不同的处理内容。
不过,无论在哪个子类执行任何一种实现,处理的大致流程都还是要依照父类制定的方式。

 

分享到:
评论

相关推荐

    JAVA设计模式之行为模式

    这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...

    JAVA-设计模式-行为型模式-模板方法模式

    JAVA-设计模式-行为型模式-模板方法模式

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象...4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

    java设计模式示例

    java设计模式示例 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型...

    java常用23中设计模式

    总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...

    java设计模式

    目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式

    Java23种设计模式可直接运行Demo

    设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 ...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    Java代码积累:并发 设计模式 数据结构 使用容器 实用 类 基础知识 并发性 演示线程的生命周期 生产者-消费者 设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者...

    《Java设计模式》源代码

    《Java设计模式》源代码.rar “结构型模式”中的“适配器模式”的定义、结构与使用。 “结构型模式”中的“桥接模式”的定义、结构与使用。 “结构型模式”中的组合模式的定义、结构与使用。 “结构型模式”中的装饰...

    33种JAVA设计模式DEMO

    模板模式(Template Pattern) 访问者模式(Visitor Pattern) 4 J2EE 模式 这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。 MVC 模式(MVC Pattern) 业务代表模式(Business Delegate ...

    Java 设计模式

    java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元...

    设计模式_模板方法模式.zip

    在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式...这种类型的设计模式属于行为型模式。 模板方法模式 java demo

    23种JAVA设计模式和15种J2EE设计模式

    设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 ...

    Java设计模式整理

    java设计模式word整理,付代码说明,时候java进阶选手,欢迎选购! 目录 1 1. 设计模式 2 1.1 创建型模式 2 1.1.1 工厂方法 2 1.1.2 抽象工厂 4 1.1.3 建造者模式 6 1.1.4 单态模式 9 1.1.5 原型模式 10 1.2 结构型...

    Java 设计模式详解超详细(含示例代码)

    Java设计模式是软件开发中常见问题的标准解决方案,它们是经过时间考验和实践证明的有效设计方法。设计模式的目标是提高代码的可重用性、可维护性和可读性,同时减少设计和实现中的复杂性。 Java设计模式可以分为...

    java种设计模式详解

    详细描述了java设计模式种23种模式,其中包括,创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...

    23种设计模式java源码

    设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 ...

    Java设计模式

    简单易懂的java 设计模式文档,对23种设计模式举例讲解:总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器...

    用Java实现23种设计模式

    用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...

Global site tag (gtag.js) - Google Analytics