<七>读<<大话设计模式>>之模板模型

哈哈,真没想到,不知不觉已经写到第七篇文章了,看来本人还是很有毅力的。其实坚持一件事很简单,只要你每天不断的朝着自己的目标出发,任何事情都不会挡着你。好了大道理不多说,谁都懂,那看看这个模板模式大家懂不懂了。

对于模板模式可能听起来很吓人,其实大家都用过,只是不知道罢了,也很简单。从字面意思上看就是我写出一个模板,然后其他类直接继承它就可以拥有模板类中的东西了,听起来像继承的定义,是的,就像现在开发一个论坛,为了能够开发速度更快,我们通常就是网上找一个模板下载下来,然后在模板基础上进行二次开发,道理一个样。

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

<<大话设计模式>>对于本章是以“小菜”面试解答选择题为故事展开的,意思是所有的选择题都是一样的,不一样的就是答题者的答案而已,那么开发这个程序的变化点就是答案,不变的就是题目,那好我们将题目封装到抽象类中,子类封装答案即可,这就是模板模型。

废话不多说,照样上代码

1、模板抽象类,将子类共有的代码封装起来

publicabstractclass AbstratorClass {

publicabstractvoid method1();

publicabstractvoid method2();

//模板方法,其实就是将公共的东西放到抽象类里面去了,即子类继承一个共同的模板,减少代码重合,增强复用

publicvoid templateMethod(){

method1();

method2();

System.out.println("我是模板");

}

}

2、子类A和B

publicclass ClassA
extends AbstratorClass {

@Override

publicvoid method1() {

//
TODO Auto-generatedmethod stub

System.out.println("我是类A的方法1");

}

@Override

publicvoid method2() {

//
TODO Auto-generatedmethod stub

System.out.println("我是类A的方法2");

}

}

publicclass ClassB
extends AbstratorClass {

@Override

publicvoid method1() {

//
TODO Auto-generatedmethod stub

System.out.println("我是类B的方法1");

}

@Override

publicvoid method2() {

//
TODO Auto-generatedmethod stub

System.out.println("我是类B的方法2");

}

}

3、客户端调用

publicclass TemplateClient {

/**

* @param args

*/

publicstaticvoid main(String[] args) {

//
TODO Auto-generatedmethod stub

AbstratorClass class1 =
new
ClassA();

class1.templateMethod();

class1 = new ClassB();

class1.templateMethod();

}

}

其实关键代码就一个地方,就是抽象类中封装的模板方法,而子类中的方法就是自己的逻辑了,想怎么写都可以了与其他子类无关,唯一相同的就是模板中的逻辑了。

总结:模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。其实就是提供了一个很好的代码复用平台,因为有时候,我们会遇到由一系列步骤构成的过程需要执行。这个过程从高层次上看是相同的,但是步骤的实现可能不同。这时候,模板方法模式该上场了………

附上代码:http://download.csdn.net/detail/jzhf2012/8102387

时间: 2024-10-17 07:06:44

<七>读<<大话设计模式>>之模板模型的相关文章

&lt;六&gt;读&lt;&lt;大话设计模式&gt;&gt;之原型模式

原型模式也是很简单的一种模式,对于java来说已经有相应的接口了(Cloneable).关于原型模式<<大话设计模式>>是以投放简历作为例子讲解的,即我要投放很多简历,其实每个简历都一样,所以只要我写好一份,其他的复制就行了,其实就是今天讲的原型模式,就是把要复制的类对象的属性复制到另外一个对象上(其实不是复制而是对象的引用改变). 原型模型:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 浅复制VS深复制 关于克隆有两个概念 浅复制:就是只复制值类型的字段,不能

&lt;二&gt;读&lt;&lt;大话设计模式&gt;&gt;之策略模式

又和大家见面了,能够坚持写出第二篇文章真不错,好好加油. <<大话设计模式>>讲解策略模式是以商场收银软件程序开头的,那么问题来了,哪家商场收银软件强,开玩笑了.读过上篇文章<<简单工厂模式>>的知道,它有两个缺点:1.客户端依赖两个类,耦合性高:2.如果算法过多则需要写很多类.解决上面问题的就是策略模式了. 策略模式:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户. 商场收银软件:单价*打折算法=售价.

&lt;一&gt;读&lt;&lt;大话设计模式&gt;&gt;之简单工厂模式

工厂模式虽然简单,但是写下这篇文章却不简单.第一:本人经过内心的挣扎后才决定开始写博文的,为什么呢,因为好长时间没有写了,对自己的文学功底也是好不自信,但是技术这东西你不写出来你真不知道自己掌握多少,或者是否掌握其本质:第二:老婆怀孕了,没时间写了,但是我还是挤出时间开始写,于是这篇文章在这样的环境下成了,以后还有后续的文章,谢谢关注! 为什么从设计模式开始学习呢?其实以前对设计模式有些了解,但是用不到也就没有深入,现在差不多也忘完了,本人工作三年了,对一些大众上的技术(比如struts2.sp

&lt;九&gt;读&lt;&lt;大话设计模式&gt;&gt;之建造者模式

学习了这么多模式,其实回想一下其实也没什么,就是用不同的方式设计代码,保证代码的可扩展性.复用等,稍微对代码进行一下修改就是另外一种模式.在我们工作中其实已经用了很多模式了,只不过不知道或者没留意他叫什么而已,无所谓,只要会用一切都是浮云. 关于<<大话设计模式>>对建造者模式的讲解是以画一个人来作为例子讲解的.人分为高人.矮人.胖人.瘦人等,但都是人,但当你去画一个人的时候,画的过程都是稳定的,都需要画头.身子.手.脚,不同的是建造的细节是不一样的.所以如果你需要将一个复杂的构件

&lt;十三&gt;读&lt;&lt;大话设计模式&gt;&gt;之适配器模式

其实我感觉这个模式是最简单的一个设计模式了,看着名字可能不明白,其原来就是一个接口.比如电脑的USB接口,内部不管外部插得什么设备只要连接USB,内部都能接收到信号,原因就是两设备之间多了个桥梁------USB. 适配器模式:将一个类的接口转换成客户希望的另一个接口.它使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. <<大话设计模式>>是以NBA球员在外国培训不懂外语,而需要翻译者来帮其翻译,那这个翻译者就是接口了.好啰嗦啊,还是用代码解释一切,因为程序员就是活在代码

&lt;八&gt;读&lt;&lt;大话设计模式&gt;&gt;之外观模式

外观模式其实很好理解的,就是将表面的东西展示给人看,内部的东西你不知道的(因为已经封装好了),比如一个外部系统要和公司内部5个系统进行交互,而这5个系统之间也有交互,那么第一种就是外部系统和5个系统都进行交互:第二种就是做一个接口将外部系统需要的逻辑封装成一个方法,该方法中包含了关于5个系统的交互方式,这样外部系统就不用直接和5个系统交互了,直接调用接口完事.外观模式也叫门面模式,其实说白了就是把要用的东西封装起来使交互更加方便. 外观模式定义:为子系统中的一组接口提供一个一致的界面,此模式定义

&lt;十一&gt;读&lt;&lt;大话设计模式&gt;&gt;之抽象工厂模式

学习设计模式有一段时间了,对设计模式有一个体会,就是没那么难,就是设计程序遵循一些原则,让代码可复用,在修改的时候不用涉及太多的类,扩展方便,抽象工厂模式名字听起来抽象,但理解起来一点也不抽象,用语言可能不好理解,我喜欢通过代码理解,然后成为自己的东西. 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. <<大话设计模式>>以项目上线时想换另外一个数据库为例子展开的,假如我没原来用的是SqlServer,现在换成access,代码如下: 1.访问数

&lt;四&gt;读&lt;&lt;大话设计模式&gt;&gt;之代理模式

代理模式我想大家即便不熟悉也都听过吧,从字面意思上看就是替别人干活的,比如代理商.在项目的实际应用中也有很多地方用到,比如spring通过代理模式生成对象等. 代理模式的书面定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 在<<大话设计模式>>一书中以一个有男朋友的女孩让"小菜"帮忙修电脑的故事展开的,其实说白了代理就是帮别人干活的,一般老板不出面,

&lt;十二&gt;读&lt;&lt;大话设计模式&gt;&gt;之状态模式

对于状态模式,<<大话设计模式>>是以人从上班到下班到加班的状态来展开讲述的.状态模式其实就是某一个对象在某个过程或者时间的一个状态记录,但是这个状态的顺序不能发生变化,在程序设计方面可能要比其他模式稍微复杂点,请待我慢慢将来. 本人喜欢用代码来形象的讲述原理,可能是因为对单纯的看些理论的书有些反感或者无趣吧,我希望以后的教育也如此,要不大家都不高考了...嘿嘿说多了 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 还是代码呈现吧,概念太抽象了.