欢迎来到天天文库
浏览记录
ID:34285404
大小:87.35 KB
页数:7页
时间:2019-03-04
《java学习教程-设计模式之模板模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、概念:定义一个操作中的算法的骨架川各一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可中定义改算法的某些特定的步骤,简单的说,一个抽象类中有个抽象主方法,再定义1,2...n个方法,可以是抽象的也可以是实际的,再定义一个类,继承改抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用。结构图:模板方法模式(TempluteMethod)结构■■publicabstractclass©bstractClassR实現了一个模板方法•定义了算法的具体子类将電定义PriaitiveOperation以实現一个算法的步■实现Pri・i
2、tiveOpenuion以完成算法中与特定子类相关的步・•Abstractclass是一个抽象类,定义并实现了一个模板方法,父类赋值搭建一个骨架,基本的逻辑的组成步骤在相应的抽象操作中,其具体的实现由子类完成。publicabstractvoidprimitiveOperationl();publicabstractvoidprimitiveOperation2();publicvoidtemplateMethod(){primitiveOperationl();primitiveOperation2();publicclassConcre
3、teClassAextendsAbstractClass{*^OverridepublicvoidprimitiveOperationl(){System.out.printIn(类A方法1实现M);}刁^Overridepublicvoidprimitive0peration2(){System.out.printIn(”具体类A方法2实现”);}publicclassConcreteClassBextendsAbstractclass{^OverridepublicvoidprimitiveOperationl(){System.out
4、.printin(”具体类B方法1实现”);}^OverridepublicvoidprimitiveOperation2(){System・out・printin("具体类B方法2实现”);}}publicclassTest7{publicstaticvoidmain(String[]args){Abstractclassc=newConcreteClassA();c・templateMethod();c=newConcreteClassB();c・templateMethod();貝Consolex化Proble
5、Test7[Jc具体类A「方法1实现—具体类A方法2实现具体类B方法1实现具体类B方法2实现模板模式特点1、模板方法模式,是把不同的行为帮移到超类,去掉子类中的重复代码来体现它的优势。2、模板就是提供了一个很好的代码复用平台实例使用模板方法模式进行登录和参数验证相关类Abstractclass・・・>ValidateAbstractclass・->LoginValidateRequestParamsValidatepackagecom・foxtalk・interceptor.validate;publicclassValidatelnfo{
6、privateIntegervalid;privateStringurl;privateStringcheckclass;privateStringparams;privateIntegerisallow;privateStringmsg;publicIntegergetValid(){returnvalid;}publicvoidsetValid(Integervalid){this.valid=valid;}publicStringgetUrl(){returnurl;}publicvoidsetUrl(Stringurl){this・
7、url=url;}publicStringgetParams(){returnparams;}publicvoidsetParams(Stringparams){this.params=params;}publicIntegergetIsallow(){returnisallow;}publicvoidsetlsallow(lntegerisallow){this・isallow=isallow;}publicStringgetMsg(){returnmsg;}publicvoidsetMsg(Stringmsg){this・msg=msg
8、;}publicStringgetCheckclass(){returncheckclass;}publicvoidsetCheckclass(Stringcheckclass)
此文档下载收益归作者所有