设计模式重构应用---Template Method模式 - 编程入门网
设计模式重构应用---Template Method模式时间:2011-07-25 BlogJava 陈新汉先简单介绍Template Method模式的内容和应用场景。 Template Method模式也叫模板方法模式,它把具有特定步骤算法中的某些必要的处理委让给抽象方法 ,通过子类继承对抽象方法的不同实现改变整个算法的行为。 在作为抽象类的父类里,定义了一个具有固定算法并可以细分为多个步骤的模板方法(public), Template Method模式把这些可以被细分的可变步骤抽象为可以被子类重载的抽象方法(protected abstract),并通过在子类中的重载(重新定义),做到无需改变模板方法的算法步骤而可以重新定义该 算法中的某些特定的步骤。 Template Method模式的UML图如下: (注意:版权所有hankchen) Template Method模式一般应用在具有以下条件的应用中: 1. 具有统一的操作步骤或操作过程 2. 具有不同的操作细节 3. 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同 前一段时间,做了一个SEO的项目,需要到一些站点发帖回复增加外链的数目,期望提高搜索引擎的排 名顺序。先不管这个项目的可行性和定位,现在只谈涉及的设计技术(模式与重构)。 由于涉及多个站点(SitePost),并且站点的数目未来是不可预知的,这是开发中的一个变数。为了 以后的可扩展性,下面是部分设计图: (注意:版权所有hankchen) 在接口ISitePost中定义了每个站点类必须具备群发帖、群回复的功能。 群发帖的接口: public boolean postAll(List<Siteboards> childboard, List<Siteusers> users, List<Postinfos> postinfos); 群回复的接口: public boolean replyAll(List<Articleinfos>articles, List<Siteusers> users, List<Postinfos> postinfos, ); 现在以群发帖的接口为例,在抽象类AbstractSitePost中采用Template Method模式实现了这个接口。 之所以,采用这个模板方法,是因为每个站点群发帖的过程,或者说步骤,是一样的: 1. 首先的群登录(随机取代理IP) 2. 然后是,针对站点的每个版面,随机用一个账号和一个帖子来提交。 这些过程是相同的,不同的是:每个站点的发帖细节不同(即post方法不同)。 具体发帖的post方法定义如下: Protected abstract String post(Siteusers userinfo,Siteboards sb,Postinfos postinfo); 这样,具体到AAA站点(AAASitePost类),只需要实现自己的post方法即可。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |