前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之—模版方法模式

设计模式之—模版方法模式

作者头像
代码改变世界-coding
发布2018-09-27 15:45:32
3400
发布2018-09-27 15:45:32
举报
文章被收录于专栏:java相关java相关
1.模版方法的定义

模版方法的英文定义为:

Template Method Pattern: Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.

翻译过来的意思是:

代码语言:javascript
复制
模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

这种模式在我们开发中经常会用到,一个简单的例子,我们在抽象类中定义若干个基本的操作,在具体的实现类中定义模版方法对基本方法实现聚合。这种实现方式就可以称为模版方法模式

2.模版方法通用模版

对于程序员来说,一天的工作中有很多个基本的工作项目组成,其中包括:签到、早会、需求讨论、功能开发、链调、午饭、bug修复等几项基本工作内容组成。而对于每一个人每天的工作流程又是不一样的,针对此功能,可以设计出以下类图:

基本方法:

代码语言:javascript
复制
其中签到、早会等基本工作项

模版方法:

代码语言:javascript
复制
模版方法为基本方法的不同组合,从而完成不同的逻辑,可以针对不同的组合定义不同的模版类,也可以在同一个类中实现不同的组合。

代码如下:

代码语言:javascript
复制
public abstract class WorkAbstractService {

    protected void sign(){
        //签到
    }

    protected void morningMeeting(){
        //早会
    }

    protected void requirementsDiscussion(){
        //需求讨论
    }

    protected void develop(){
        //功能开发
    }

    protected void eat(){
        //午饭
    }

    protected void debug(){
        //联调
    }

    protected void fixBug(){
        //修复bug
    }
}

public class WorkServiceImpl extends WorkAbstractService{

    public void workFlow1(){
        //签到-早会-需求讨论-午饭-开发-联调-修复bug
        sign();
        morningMeeting();
        requirementsDiscussion();
        eat();
        develop();
        debug();
        fixBug();
    }

    public void workFlow2(){
        //签到-需求讨论-开发-午饭-联调-修复bug
        sign();
        requirementsDiscussion();
        develop();
        eat();
        develop();
        fixBug();
    }

}
3.模版方法的优缺点

优点:

代码语言:javascript
复制
1.封装不变部分,扩展可变部分
2.提取公共功能部分,便于维护
4.模版方法的使用场景
代码语言:javascript
复制
1.多个子类有公共的方法,并且逻辑基本相同
2.重构的时候,模版方法是一个经常使用的模式,把相同的代码提取到父类中,然后通过钩子函数约束其行为。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.模版方法的定义
  • 2.模版方法通用模版
  • 3.模版方法的优缺点
  • 4.模版方法的使用场景
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档