博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模板方法模式理解
阅读量:6969 次
发布时间:2019-06-27

本文共 838 字,大约阅读时间需要 2 分钟。

原文:

http://blog.csdn.net/lovelion/article/details/8299794

1. 模板方法模式概述

       在现实生活中,很多事情都包含几个实现步骤,例如请客吃饭,无论吃什么,一般都包含点单、吃东西、买单等几个步骤,通常情况下这几个步骤的次序是:点单 --> 吃东西 --> 买单。在这三个步骤中,点单和买单大同小异,最大的区别在于第二步——吃什么?吃面条和吃满汉全席可大不相同,如图1所示:

 在软件开发中,有时也会遇到类似的情况,某个方法的实现需要多个步骤(类似“请客”),其中有些步骤是固定的(类似“点单”和“买单”),而有些步骤并不固定,存在可变性(类似“吃东西”)。为了提高代码的复用性和系统的灵活性,可以使用一种称之为模板方法模式的设计模式来对这类情况进行设计,在模板方法模式中,将实现功能的每一个步骤所对应的方法称为基本方法(例如“点单”、“吃东西”和“买单”),而调用这些基本方法同时定义基本方法的执行次序的方法称为模板方法(例如“请客”)。在模板方法模式中,可以将相同的代码放在父类中,例如将模板方法“请客”以及基本方法“点单”和“买单”的实现放在父类中,而对于基本方法“吃东西”,在父类中只做一个声明,将其具体实现放在不同的子类中,在一个子类中提供“吃面条”的实现,而另一个子类提供“吃满汉全席”的实现。通过使用模板方法模式,一方面提高了代码的复用性,另一方面还可以利用面向对象的多态性,在运行时选择一种具体子类,实现完整的“请客”方法,提高系统的灵活性和可扩展性。

  点评:这个作者解析得真是通俗易懂,真是举重若轻。

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

 

代码就不贴了,设计模式的关键在于其思想。

 

转载于:https://www.cnblogs.com/limingxian537423/p/8308457.html

你可能感兴趣的文章
我的友情链接
查看>>
Django学习(二) Django框架简单搭建
查看>>
iOS相关的ARM汇编
查看>>
canvas 最基本简单的示例
查看>>
TYVJ P1001 第K极值 Label:水
查看>>
react-native学习(一)————使用react-native-tab-navigator创建底部导航
查看>>
IOS 页面之间的传值(主讲delegate)
查看>>
新的旅程:NodeJS - 环境篇
查看>>
登录界面设计之二:图片转换问题
查看>>
vue 面试时需要准备的知识点
查看>>
rsync
查看>>
Algs4-1.5.20动态生长with linkList
查看>>
GAN实现半监督学习
查看>>
【小技巧】小图标和文字的居中对齐-小总结
查看>>
docker swarm英文文档学习-10-使用Docker密钥管理敏感数据
查看>>
driver_1_1
查看>>
LeetCode OJ - Single Number
查看>>
[模板] 计算几何2: 自适应Simpson/凸包/半平面交/旋转卡壳/闵可夫斯基和
查看>>
PHP 学习笔记---基本语法
查看>>
良序原理
查看>>