设计模式专题(八) ——模板方法模式

设计模式专题(八)

——模板方法模式

(原创内容,转载请注明来源,谢谢)

一、概念

1)含义

模板方法模式是为了让重复的内容都在父类实现,而避免重复。当完成某一细节层次一致的一个过程或者一系列步骤,其中个别步骤不同,则可以用模板方法模式进行处理。

模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类。模板方法使得子类可以不改变算法结构即可重定义算法的某些特定步骤。

2)优势

模板方法模式通过把不变行为搬移到父类,去除子类的重复代码。模板方法提供一个很好的代码复用平台。当不变的行为在可变的子类中出现,则可以把行为搬到单一的地方,子类摆脱重复的行为。

二、类图

三、运用场景

模板方法模式非常常用,在公司的大项目中,代码重复率往往也会作为考核指标。另外,大量重复的代码带来维护的不变,如果有需要修改的地方,容易有遗漏。

因此,模板方法模式通常用于总的父类,再让子类去继承。

例如,结合工厂方法模式,针对要实现的数据库实体,将数据库的连接、数据库的操作等,放在公共的类进行封装,再对每个具体的表格去实现实体。

此部分在工厂方法模式已经实现,不再赘述。

——written by linhxx 2017.08.01

相关阅读:

设计模式专题(七)——建造者模式

设计模式专题(六)——原型模式

设计模式专题(五)——工厂方法模式

设计模式专题(四)——代理模式

设计模式专题(三)——装饰模式

设计模式专题(二)——策略模式

设计模式专题(一)——面向对象的设计原则

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2017-08-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHP在线

URL短链接实现方法

最近项目开发中,需要实现URL长链接转短链接的需求,于是在网上找了一些资料,顺便整理了下,欢迎有想法的童鞋踊跃留言,我们共同探讨。

7608
来自专栏程序人生

Promise: 给我一个承诺,我还你一个承诺

处理concurrent programming,除了threading/multi-processing外,各家语言都有自己的绝活:erlang/elixir...

2824
来自专栏程序员的知识天地

Python牛B操作:一行代码减少一半内存占用

在项目制作中,我们必须要存储和处理一个相当大的动态列表。测试人员在测试过程中,抱怨内存不足。下面介绍一个简单的方法,通过添加一行代码来解决这个问题。

1222
来自专栏有趣的django

1.python简介

简介 1、python语言介绍 python的创始人:Guido Van Rossum 2、python是一门什么样的语言 编程语言主要从以下几个角度进行分类:...

3615
来自专栏魂祭心

原 Introduction to the

3539
来自专栏Vamei实验室

Python标准库02 时间与日期 (time, datetime包)

Python具有良好的时间和日期管理功能。实际上,计算机只会维护一个挂钟时间(wall clock time),这个时间是从某个固定时间起点到现在的时间间隔。时...

2296
来自专栏FreeBuf

pwnable.tw刷题之dubblesort

前言 上一篇中我介绍了phttp://www.freebuf.com/articles/others-articles/134271.htmlwnable.tw...

3006
来自专栏北京马哥教育

Python入门教程:超详细1小时学会Python

1.Hello world 安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写的语句能够立即运行。 我们写下...

4375
来自专栏小灰灰

动手实现MVC: 3. AOP实现准备篇动态代理

背景 在实现AOP功能时,必然扰不开代理模式,所以在此之前,先准备下代理模式相关知识点 代理 关于代理,主要需要注意以下几个点 什么是代理模式 为什么要用代理 ...

1727
来自专栏从零开始学 Web 前端

嵌入式面试题(一)

4. 空指针(null pointer)指向了内存的什么地方(空指针的内部实现)?

982

扫码关注云+社区