23种设计模式(6):模版方法模式-java开发java经验技巧

23种设计模式(6):模版方法模式-java开发java经验技巧

ID:31185192

大小:81.50 KB

页数:3页

时间:2019-01-07

23种设计模式(6):模版方法模式-java开发java经验技巧_第1页
23种设计模式(6):模版方法模式-java开发java经验技巧_第2页
23种设计模式(6):模版方法模式-java开发java经验技巧_第3页
资源描述:

《23种设计模式(6):模版方法模式-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、23种设计模式(6):模版方法模式-编程开发技术23种设计模式(6):模版方法模式原文出处:卡奴达摩的专栏定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。类型:行为类模式类图:v<抽象类>>AbstractClass#otherMethod()+templateMethod()A事实上,模版方法是编程屮一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序z后的结果打印出來。经过分析z后,这个任务大体上可分为

2、两部分,排序和打印,打印功能好实现,排序就有点麻烦了。但是A有办法,先把打印功能完成,排序功能另找人做。abstractclassAbstractSort{/***将数组array由小到大排序*@perramarray*/protectedabstractvoidsort(int[]array);publicvoidshowSortResult(int[]array){this.sort(array);System,out.print(〃排序结果:〃);for(inti=0;i〈array,length;i++){System.out.pri

3、ntf("%3s〃,array[i]);写完后,A找到刚毕业入职不久的同事B说:有个任务,主要逻辑我已经写好了,你把剩下的逻辑实现一下吧。于是把AbstractSort类给B,让B写实现。B拿过来一看,太简单了,10分钟搞定,代码如下:classConcreteSortextendsAbstractSort{@0verrideprotectedvoidsort(int[]array){for(inti二0;y.1ength-1;i++){selectSort(array,i);}privatevoidselectSort(int[]array

4、,intindex){intMinValue=32767;//最小值变量intindexMin=0;//最小值索引变量intTemp;//暂存变量for(inti=index;i

5、assClient{publicstaticinta={10,32,1,9,5,7,12,0,4,3};//预设数据数组publicstaticvoidmain(String[]args){AbstractSorts=newConcreteSort();s.showSortResuIt(a);运行结果:排序结果:?0?1?3?4?5?7?9101232运行正常。行了,任务完成。没错,这就是模版方法模式。大部分刚步入职场的毕业生应该都有类似B的经历。一个复杂的任务,由公司中的牛人们将主要的逻辑写好,然后把那些看上去比较简单的方法写成抽象的,交给

6、其他的同事去开发。这种分工方式在编程人员水平层次比较明显的公司中经常用到。比如一个项目组,冇架构师,高级工程师,初级工程师,则一般由架构师使用大量的接口、抽象类将整个系统的逻辑串起来,实现的编码则根据难度的不同分别交给高级工程师和初级工程师来完成。怎么样,是不是用到过模版方法模式?模版方法模式的结构模版方法模式由一个抽象类和一个(或一•组)实现类通过继承结构组成,抽象类中的方法分为三种:•抽象方法:父类屮只声明但不加以实现,而是定义好规范,然后由它的子类去实现。•模版方法:由抽彖类声明并加以实现。一般來说,模版方法调用抽彖方法來完成主要的逻辑

7、功能,并且,模版方法人多会定义为final类型,指明主要的逻辑功能在了类中不能被重写。•钩子方法:由抽象类声明并加以实现。但是子类可以去扩展,子类可以通过扩展钩子方法來影响模版方法的逻辑。•抽彖类的任务是搭建逻辑的框架,通常由经验丰富的人员编写,因为抽彖类的好坏肓接决定了程序是否稳定性。实现类用來实现细节。抽象类中的模版方法止是通过实现类扩展的方法來完成业务逻辑。只要实现类屮的扩展方法通过了单元测试,在模版方法正确的前捉下,整体功能一般不会出现大的错误。模版方法的优点及适用场景容易扩展。一般來说,抽象类中的模版方法是不易反生改变的部分,而抽象

8、方法是容易反生变化的部分,因此通过增加实现类一般可以很容易实现功能的扩展,符合开闭原则。便于维护。对于模版方法模式来说,正是由于他们的主要逻辑相同,才使用了模版方法

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。