`

设计模式----模板方法模式(template method pattern)

 
阅读更多
HummerModel.java代码如下:
 package com.designPattern.templateMethod;

  public abstract class HummerModel {

	protected abstract void start();
	
	protected abstract void stop();
	
	protected abstract void alarm();
	
	protected abstract void engineBoom();
	
	/**
	 * 这就是模板方法:run()定义了其他方法的顺序,并且子类不能修改这个run()方法(修饰符为final)
	 * 在模板方法中按照一定的规则和顺序调用抽象方法,抽象方法在不同的子类中内容不同
	 */
	final public void run(){
		
		this.start();
		
		this.engineBoom();
		
		if(this.isAlarm()){
			this.alarm();
		}
		
		this.stop();
	}
	
	protected boolean isAlarm(){
		return true;
	}
}



HummerH1Model.java代码如下:
package com.designPattern.templateMethod;

public class HummerH1Model extends HummerModel{

	private boolean alarmFlag = true;
	@Override
	protected void start() {
		System.out.println("悍马1启动!");
		
	}

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

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

	@Override
	protected void engineBoom() {
		System.out.println("悍马1引擎启动!");
		
	}
	
	protected boolean isAlarm(){
		return this.alarmFlag;
	}
	
	public void setAlarm(boolean isAlarm){
		this.alarmFlag = isAlarm;
	}

}



HummerH2Model.java代码如下:
package com.designPattern.templateMethod;

public class HummerH2Model extends HummerModel{

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

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

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

	@Override
	protected void engineBoom() {
		System.out.println("悍马2引擎启动!");
		
	}
	
	public boolean isAlarm(){
		return false;
	}

}



Client.java代码如下:
package com.designPattern.templateMethod;

public class Client {
	
	public static void main(String[] args) {
		HummerModel h1 = new HummerH1Model();
		h1.run();
		
		HummerModel h2 = new HummerH2Model();
		h2.run();
	}

}



运行结果如下:
悍马1启动!
悍马1引擎启动!
悍马1鸣笛!
悍马1停车!
悍马2发动!
悍马2引擎启动!
悍马2停车!

分享到:
评论

相关推荐

    Head First 设计模式 (八) 模板方法模式(Template Method pattern) C++实现

    模板方法模式是设计模式中的一种行为模式,它在软件工程中扮演着重要的角色,尤其是在C++这样的面向对象编程语言中。这种模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的...

    C#设计模式-吕震宇

    设计模式(21)-Template Method Pattern 设计模式(20)-Visitor Pattern 设计模式(19)-Observer Pattern 设计模式(18)-Command Pattern 设计模式(17)-Chain of Responsibility Pattern 设计模式(16)...

    java设计模式---诙谐易懂版

    代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、适配器模式(Adapter Pattern)、模板方法模式(Template Method...

    design-pattern-java.pdf

    算法的封装与切换——策略模式(四) 模板方法模式-Template Method Pattern 模板方法模式深度解析(一) 模板方法模式深度解析(二) 模板方法模式深度解析(三) 访问者模式-Visitor Pattern 操作复杂对象结构——...

    11.设计模式-模板方法模式1

    模板方法模式(Template Method Pattern)是一种行为设计模式,它允许在父类中定义算法的框架,然后由子类提供具体的实现。这种模式的核心是“模板方法”,它在父类中定义了一个操作的步骤顺序,并将某些步骤声明为...

    C++设计模式课件3_Template Method_模板方法.pdf

    模板方法模式(Template Method Pattern)是一种行为型设计模式,它允许我们定义算法的骨架,并将部分步骤推迟到子类中实现。这种模式使得子类可以在不改变算法结构的情况下重新定义算法的某些步骤。 #### 模式背景...

    模版方法模式TemplatePattern

    模板方法模式(Template Pattern)是设计模式中行为型模式的一种,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。这种模式允许子类重新定义或改变某些基本操作,但整体结构和顺序保持不变。在Java编程中,...

    JAVA设计模式-chm版

    包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)...Strategy)、模板方法模式(Template Method)和访问者模式(Visitor)...

    设计模式 - Design Pattern

    - 模板方法(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - 访问者(Visitor):表示一个作用于某对象结构中的...

    设计模式整理代码-pattern.zip

    - 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - 访问者模式(Visitor):表示一个作用于某对象...

    C++11全套设计模式-23种指针的用法(a full DesignPattern -DesignPattern.zip

    14. **模板方法模式(Template Method)**:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。C++11的虚函数和模板可以实现这一模式。 15. **命令模式(Command)**:将请求封装为一个对象,以便使用...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    - **模板方法**(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - **访问者**(Visitor):表示一个作用于某对象结构中的各元素的操作。 #### 八、设计模式的应用总结 **设计模式的应用...

    23种设计模式 - 架构设计 - PPT

    - **模板方法模式(Template Method)**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - **观察者模式(Observer)**:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都...

    JAVA design pattern-java设计模式

    如命令(Command)、解释器(Interpreter)、迭代器(Iterator)、中介者(Mediator)、备忘录(Memento)、观察者(Observer)、状态(State)、策略(Strategy)、模板方法(Template Method)、访问者(Visitor)...

    23种设计模式-C++实现.zip

    - **模板方法模式(Template Method)**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - **访问者模式(Visitor)**:表示一个作用于某对象结构中的各元素的操作。 这些设计模式在C++中可以通过继承、...

    design-pattern-Java设计模式

    行为型模式如策略(Strategy)、模板方法(Template Method)、观察者(Observer)、命令(Command)、迭代器(Iterator)、访问者(Visitor)、备忘录(Memento)、状态(State)、职责链(Chain of Responsibility...

    这是一套 Java 设计模式的集合示例-design-pattern.zip

    - 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它可以在不改变各元素的类的前提下定义作用于...

    DesignPattern_Template:设计模式-模板方法模式

    模板方法模式作为设计模式之一,是一种行为模式,它在面向对象设计中扮演着关键角色。该模式允许我们在抽象类中定义一个算法的骨架,而将一些步骤延迟到子类中。这种做法使得子类可以不改变算法的结构即可重定义算法...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER PATTERN 11、桥梁模式BRIDGE PATTERN 12、命令模式COMMAND PATTERN 13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合...

Global site tag (gtag.js) - Google Analytics