




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA中模板模式、策略模式解析 分类: IT技术类 2010-02-05 16:37最近对JAVA中的模板设计模式和策略设计模式进行了学习,个人总结如下:1、 模板设计模式:个人认为模板模式是通过继承方式实现,也就是将不变的部分写在其类里面,将变化的部份通过抽象方法在基类中写出,通过继承由子类自己去实现变化的部分。模板模式常用在将一个大程序分为N块,每一块建立一个抽象类由子类去实现,相当于一个架构师写好一个基本骨架,由各个程序员去实现自己相应的部分。2、 适用情况1) 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。2) 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。其实这可以说是一种好的编码习惯了。3) 控制子类扩展。模板方法只在特定点调用操作,这样就只允许在这些点进行扩展。比如上面runBare()方法就只在runTest前面适用setUp方法。如果你不愿子类来修改你的模板方法定义的框架,你可以采用两种方式来做:一是在API中不体现出你的模板方法;二、将你的模板方法置为final就可以了可以看出,使用模板方法模式可以将代码的公共行为提取出来,达到复用的目的。而且,在模板方法模式中,是由父类的模板方法来控制子类中的具体实现。这样你在实现子类的时候,根本不需要对业务流程有太多的了解。例子如下:package cn.tcl.test;public abstract class MakeBox public void doThis()System.out.println(do this .);public void doThat()System.out.println(do that .);abstract void addColor();public void generateBox()doThis();addColor();doThat();package cn.tcl.test;public class MakeRiceBox extends MakeBox Overridevoid addColor() System.out.println(add red color);package cn.tcl.test;public class TemplateTest /* * param args */public static void main(String args) MakeBox makeBox = new MakeRiceBox();makeBox.generateBox();从上面例子可以看出,MakeBox类中将addColor定义为抽象方法由子类去实现,每个继承了MakeBox类的子类都必须实现该抽象方法,这就象写好一个模板似的,程序员只修改继承的抽象方法即可。2、策略模式:个人认为所谓策略模式就是在一个方法的参数中引入另外一个类型的接口,而这个参数接口的具体实现由该方法调用时传入接口的实现类去实现不同的策略。最常用的一个策略模式应该是Servlet了,我们每个客户端程序员都在Servlet的service方法实现自己的策略,然后由框架去调用。其实常用的框架中大量采用的策略模式:spring、struts、servlet等等。例子如下:package cn.tcl.test;public class StrategyTest /* * 此处该方法并不知道会打印出什么结果 * 具体的结果得根据传入参数的策略而定 * param s */public static void say(Student s)s.say();/* * param args */public static void main(String args) Student s1 = new SeniorStudent();s1.say();Student s2 = new PirmaryStudent();s2.say();package cn.tcl.test;public interface Student public void say();package cn.tcl.test;public class PirmaryStudent implements Student Overridepublic void say() System.out.println(I am a Primary Student);package cn.tcl.test;public class SeniorStudent implements Student Overridepublic void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论