大话设计模式 - 模板方法(Template Method)模式
2014-07-28 22:38
183 查看
模式定义
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。
模式结构
![](http://s3.51cto.com/wyfs02/M01/41/E0/wKioL1PWYCWQpeDaAAAWhQ1APAw952.png)
模板方法模式调用顺序图
![](http://s3.51cto.com/wyfs02/M02/41/E0/wKioL1PWYHGhLEMkAAApYJstH5o227.png)
模板方法缺点
模板和子类是紧耦合,如果对模板中的算法骨架进行升级,可能会要求对所有相关子类的进行相应的变化。
具体例子
FileGenerator(Hoovers)
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。
模式结构
![](http://s3.51cto.com/wyfs02/M01/41/E0/wKioL1PWYCWQpeDaAAAWhQ1APAw952.png)
模板方法模式调用顺序图
![](http://s3.51cto.com/wyfs02/M02/41/E0/wKioL1PWYHGhLEMkAAApYJstH5o227.png)
模板方法缺点
模板和子类是紧耦合,如果对模板中的算法骨架进行升级,可能会要求对所有相关子类的进行相应的变化。
具体例子
FileGenerator(Hoovers)
public void Generate() { FillShares(); FillWithAdditionalShares(); Log.Info("","",string.Format("Shares count:{0}", shares.Count)); InitBlocks(); Log.Info("","","InitBlocks work done"); FillBlocks(); Log.Info("","","FillBlocks work done"); GenerateFile(); Log.Info("","","Processed " + shares.Count + " shares."); }
protected abstract DataBlock InitBlockType(string shareClassId);APIBaseDataCategoryDump(EquityAPI)
相关文章推荐
- 大话设计模式之模板方法模式(Template Method Pattern)
- 设计模式学习笔记(二十四)——Template Method模板方法
- 行为型模式-模板方法模式(Template Method)
- 模板方法模式 :Template Method(转自阿良.NET)
- 第三十三章 模板方法模式(Template Method)
- 模板方法(Template Method)-----类行为型模式
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 解读设计模式----模板方法模式(Template Method),电脑就是这样造出来的
- 14. Template Method模板方法(行为型模式)
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 设计模式之模板方法模式(Template Method)
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式(12)-模板方法模式(Template Method)
- 模板方法模式(Template Method Pattern)学习笔记
- 模板方法模式(Template Method Pattern)
- 模板方法(Template Method)模式
- 行为模式 - 模板方法(Template Method)
- C#面向对象设计模式纵横谈 学习笔记14 Template Method模板方法(行为型模式)
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 模板方法(Template Method)模式