`
yaoweinan
  • 浏览: 132919 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

模版模式(TemplatePattern)

阅读更多

模版模式分为2个部分

 

1.抽象模版

2.具体模版

 

我的个人理解就是在抽象模版中定义其子类所有持有的动作,但并不去实现,并且定义好了这些动作的执行顺序

 

在具体模版实现具体动作的实际处理,但这些动作对外执行的顺序,都是在抽象模版中定义好的,这些抽象方法和顺序估计就是所谓的模版吧。

 

对计算机的操作我们最清楚不过了,开机->系统启动->使用->关机->系统关闭,下面就看看我是怎么来用模板模式来实现的个人电脑和一个特殊的服务器电脑。

AbstractComputerModel:抽象模版

ServerComputer、PersonalComputer 具体模版

Person 使用者

 

 

AbstractComputerModel

 

package j2se.pattern;

/**
 * 
 * @author Lyon Yao
 *
 */
public abstract class AbstractComputerModel {
	protected abstract void pushStart();
	protected abstract void start();
	protected abstract void operate();
	protected abstract void pushStop();
	protected abstract void stop();
	protected boolean canOperate() {
		return true;
	}
	public final void use(){
		pushStart();
		start();
		if(canOperate()){
			operate();
		}
		pushStop();
		stop();
	}
}

 PersonalComputer

 

package j2se.pattern;

public class PersonalComputer extends AbstractComputerModel {

	@Override
	protected void pushStart() {
		// TODO Auto-generated method stub
		System.out.println("你按了开机按钮");
	}

	@Override
	protected void start() {
		// TODO Auto-generated method stub
		System.out.println("电脑正在启动...");
	}

	@Override
	protected void operate() {
		// TODO Auto-generated method stub
		System.out.println("你正在操作电脑...");
	}

	@Override
	protected void pushStop() {
		// TODO Auto-generated method stub
		System.out.println("你按了关机按钮..");
	}

	@Override
	protected void stop() {
		// TODO Auto-generated method stub
		System.out.println("电脑正在关闭...");
	}

}

 ServerComputer

 

package j2se.pattern;

/**
 * 服务器  比较特别  设置好之后就会保存到硬盘,下次开机默认就不能操作了,只有按下一键恢复按钮才能重新设置,操作
 * @author Lyon Yao
 *
 */
public class ServerComputer extends AbstractComputerModel {

	private static boolean canOperate=true;

	@Override
	protected void pushStart() {
		// TODO Auto-generated method stub
		System.out.println("你按了服务器开机按钮");
	}

	@Override
	protected void start() {
		// TODO Auto-generated method stub
		System.out.println("服务器正在启动....");
	}

	@Override
	protected void operate() {
		// TODO Auto-generated method stub
		System.out.println("你正在操作服务器...");
		this.canOperate=false;
	}

	@Override
	protected void pushStop() {
		// TODO Auto-generated method stub
		System.out.println("你按了服务器关机按钮");
	}

	@Override
	protected void stop() {
		// TODO Auto-generated method stub
		System.out.println("服务器正在关机...11");
	}

	@Override
	protected boolean canOperate() {
		// TODO Auto-generated method stub
		return this.canOperate;
	}
	public void resetServer(){
		this.canOperate=true;
	}
	
}

 Person

 

 

package j2se.pattern.test;

import j2se.pattern.PersonalComputer;
import j2se.pattern.ServerComputer;

public class Person {
	private boolean o;
	public static void main(String []args){
		PersonalComputer p=new PersonalComputer();
		p.use();
		
		System.out.println("................................");
		ServerComputer computer=new ServerComputer();
		
		computer.use();
		
		computer.use();
		computer.resetServer();
		
		computer.use();
		
		
	}
}
分享到:
评论

相关推荐

    模板模式Template Pattern

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

    模版方法模式TemplatePattern

    模版方法模式TemplatePattern(java),博文附件

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

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

    TemplatePattern:模板模式示例

    模板模式 模板模式示例 在模板模式中,抽象类公开定义的方式/模板来执行其方法。 它的子类可以根据需要重写方法的实现,但是调用的方式应与抽象类所定义的方式相同。 此模式属于行为模式类别。 执行 我们将创建一个...

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

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

    用Java实现23种设计模式

    模板模式(Template Pattern) 访问者模式(Visitor Pattern) 4. J2EE 模式 MVC 模式(MVC Pattern) 业务代表模式(Business Delegate Pattern) 数据访问对象模式(Dao Pattern) 前端控制器模式(Front ...

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

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

    C#版 24种设计模式

    工厂方法模式(Factory Method Pattern) 观察者模式(Observer Pattern) 建造者模式(Builder Pattern) 解释器模式(Interpreter Pattern) 命令模式(Command Pattern) 模板方法模式(Template Method Pattern) 桥接模式...

    33种JAVA设计模式DEMO

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

    Java设计模式,并加上个人理解

    8. 模板方法模式 (Template Pattern) 9. 建造者模式 (Builder Pattern) 10. 原型模式 (Prototype Pattern) 11. 组合模式 (Composite Pattern) 12. 装饰者模式 (Decorator Pattern) 13. 访问者模式 ...

    python 模板方法模式(示例)

    设计模式——模板方法模式模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤使用场景:当不变和可...

    24种设计模式与6大设计原则

    模板方法模式[TEMPLATE METHOD PATTERN] 建造者模式[BUILDER PATTERN] 策略模式 代理模式 单例模式 多例模式 工厂方法模式 抽象工厂模式 门面模式 适配器模式 模板方法模式 建造者模式 桥梁模式 命令模式 装饰模式 ...

    C++设计模式(Design Pattern)范例源代码

    23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下...模板方法模式(Template Method) 访问者模式(Visitor)

    C#模板方法模式(Template Method Pattern)实例教程

    主要介绍了C#模板方法模式(Template Method Pattern),以实例形式讲述了C#抽象类模板方法的用法,具有很高的实用价值,需要的朋友可以参考下

    C#设计模式_设计模式_C#_

    模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式(Mediator Pattern) 19. ...

    设计模式PPT

    创建型模式用来处理对象的创建过程,主要包含以下5种设计模式:  工厂方法模式(Factory Method Pattern)  抽象工厂模式... 模板方法模式(Template Method Pattern)  访问者模式(Visitor Pattern)

    C#设计模式(23种设计模式)

    模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代器模式(Iterator Pattern) 行为型: 16. 观察者模式(Observer Pattern) 17. 解释器模式(Interpreter Pattern) 18. 中介者模式...

    Python设计模式之模板方法模式实例详解

    模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 下面是一个模板方法模式的一个demo: #!/...

    设计模式 design pattern

    5.10 TEMPLATE METHOD(模板方法) —类行为型模式 214 5.11 VISITOR(访问者)—对象行为型 模式 218 5.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被分布 229 ...

Global site tag (gtag.js) - Google Analytics