`

设计模式重构应用---Template Method模式

 
阅读更多

先简单介绍Template Method模式的内容和应用场景。

Template Method模式也叫模板方法模式,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。

在作为抽象类的父类里,定义了一个具有固定算法并可以细分为多个步骤的模板方法(public),Template Method模式把这些可以被细分的可变步骤抽象为可以被子类重载的抽象方法(protected abstract),并通过在子类中的重载(重新定义),做到无需改变模板方法的算法步骤而可以重新定义该算法中的某些特定的步骤。

Template Method模式的UML图如下:

image

(注意:版权所有hankchen

Template Method模式一般应用在具有以下条件的应用中:

1. 具有统一的操作步骤或操作过程

2. 具有不同的操作细节

3. 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同

前一段时间,做了一个SEO的项目,需要到一些站点发帖回复增加外链的数目,期望提高搜索引擎的排名顺序。先不管这个项目的可行性和定位,现在只谈涉及的设计技术(模式与重构)。

由于涉及多个站点(SitePost),并且站点的数目未来是不可预知的,这是开发中的一个变数。为了以后的可扩展性,下面是部分设计图:

image

(注意:版权所有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方法即可。

友情提示:本博文章欢迎转载,但请注明出处:陈新汉

分享到:
评论

相关推荐

    设计模式与重构(design pattern )

    设计模式与重构是软件开发中的两个重要概念,它们在提高代码质量、可维护性和扩展性方面发挥着关键作用。设计模式是经验丰富的开发者们在解决常见问题时总结出的最佳实践,而重构则是在不改变软件外部行为的前提下,...

    TemplateMethod 模式与代码重构

    TemplateMethod(模板方法)设计模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色。这个模式允许我们在抽象类中定义一个算法的框架,同时允许子类在不改变算法结构的情况下重写算法中的特定步骤。通过...

    JAVA设计模式-chm版

    3. 分析和重构现有代码,找出并应用设计模式。 4. 参与讨论和分享,与其他开发者交流设计模式的理解和应用。 总之,“JAVA设计模式-chm版”资源对于深入理解并掌握Java设计模式具有很高的价值。通过学习和实践,...

    ASP.NET设计模式-杨明军译(源码)

    8.1.1 Factory Method设计模式 8.1.2 Service Locator 8.1.3 IoC容器 8.1.4 StructureMap 8.2 Model-View-Presenter 8.3 Front Controller 8.3.1 Command模式 8.3.2 Chain of Responsibility模式 8.4 Model...

    23种设计模式 - 架构设计 - PPT

    ### 23种设计模式详解 #### 一、设计模式概览 ...以上是对23种设计模式中一部分模式的基本概述,每种模式都有其特定的应用场景和优点,了解和掌握这些设计模式对于提高软件质量和开发效率具有重要意义。

    C++设计模式课件3_Template Method_模板方法.pdf

    ### C++设计模式课件3_Template Method_模板方法 #### 模板方法设计模式解析 模板方法模式(Template Method Pattern)是一种行为型设计模式,它允许我们定义算法的骨架,并将部分步骤推迟到子类中实现。这种模式...

    设计模式源码

    每一种设计模式都有其特定的用途和应用场景,比如: - 单例模式保证一个类只有一个实例,适用于资源管理或全局配置。 - 工厂方法模式允许子类决定实例化哪一个类,提供了一种封装对象创建过程的方式。 - 抽象工厂...

    设计模式精解 设计模式精解

    根据给定的信息,本文将深入探讨GoF23种设计模式的核心概念及其应用场景,并通过具体的实例来解析每一种设计模式的实现原理和技术要点。 ### 0. 引言 设计模式是一系列被广泛接受的解决方案,用于解决软件设计中...

    设计模式:可复用面向对象软件的基础--详细书签版

    因此我们欢迎广大读者的批评与指正,无论从书中采用的实例、参考,还是我们遗漏的已知应用,或应该包含的设计模式等方面。你可以通过Addison-Wesley写信给我们,或发送电子邮件到:design-patterns@cs.uiuc.edu。你...

    GoF设计整理(C#实现)在示意图、C#代码的基础上,又增加了设计模式意图、使用场景和重构成本,并增加了PDF书签功能。以后还将持续完善。下载.

    本文将基于给定的资料,详细介绍GOF(GoF,即Gang of Four)设计模式中的各类模式,包括其定义、意图、应用场景及可能带来的重构成本,并简要提及资料中新增加的PDF书签功能。 #### 设计模式简介 设计模式是针对某...

    设计模式,设计模式详解

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践...通过阅读《Refactoring-重构》这样的书籍,我们可以学习如何改进现有代码,使其更符合设计模式的思想,提升软件的整体架构质量。

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    ### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 设计模式是一套被反复使用、多数人知晓的、经过分类...每种模式都有其独特的应用场景,理解并合理使用这些设计模式能够显著提升软件设计的质量。

    设计模式复习笔记大全

    ### 设计模式复习笔记大全 #### 一、设计模式概览 **设计模式**是一种用于在特定场景下解决常见设计问题的方案。它通常描述了一组相互作用的类和对象,以及这些对象如何通信来解决问题。设计模式的核心要素包括...

    23中设计模式介绍以及相关详细demo,idea工具

    例如,IDEA可以通过代码提示和重构工具帮助开发者识别和应用设计模式,提高代码质量。 在"相关详细demo"中,这些示例代码通常会展示如何在实际项目中应用上述设计模式,帮助学习者理解和掌握它们的实际运用。通过...

    设计模式可复用面向对象软件的基础.zip

    书名: 设计模式可复用面向对象软件的基础 英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价...

    重构与模式.[美]Joshua Kerievsky(带详细书签).pdf

    本书不仅展示了一种应用模式和重构的创新方法,而且有助于读者结合实战深入理解重构和模式。书中讲述了27种重构方式。 本书适于面向对象软件开发人员阅读,也可作为高校计算机专业、软件工程专业师生的参考读物。 ...

Global site tag (gtag.js) - Google Analytics