读书笔记8:模板方法模式
来源:互联网 发布:淘宝助理没有宝贝 编辑:程序博客网 时间:2024/05/10 01:56
1、 概念
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类不改变算法的结构也可以重定义某些算法的特定步骤。
2、 模型
模板方法模式在编程中是经常用到的,就不做详细解释了。常见模型如下:
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace TemplateMethod
- {
- public abstract class TemplateSuper//父类定义了算法框架
- {
- public void InitialOperation()
- {
- Console.WriteLine("父类的具体算法。");
- }
- public abstract void AbstractMethod();
- }
- public class CreateTemplate1:TemplateSuper//继承父类并实现部分算法1
- {
- public override void AbstractMethod()
- {
- Console.WriteLine("子类实现部分算法1");
- }
- }
- public class CreateTemplate2 : TemplateSuper//继承父类并实现部分算法2
- {
- public override void AbstractMethod()
- {
- Console.WriteLine("子类实现部分算法2");
- }
- }
- }
- 客户端:
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace TemplateMethod
- {
- class Program
- {
- static void Main(string[] args)
- {
- TemplateSuper tsuper;
- tsuper = new CreateTemplate1();
- tsuper.InitialOperation();
- tsuper.AbstractMethod();
- tsuper = new CreateTemplate2();
- tsuper.AbstractMethod();
- Console.ReadLine();
- }
- }
- }
结果:
那么可以发现,模板方法模式和前面的策略模式很像,都是继承父类实现不同的算法。但是它们是有区别的,从定义可以看到,模板方法模式:一个操作中的算法的骨架,而将一些步骤延迟到子类中。策略模式:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响使用算法的客户。
它们的区别是,模板方法模式,父类中已经有了算法的骨架,只是延迟了一些步骤到子类中处理,也就是说,子类只实现了一部分算法。而策略模式,只是定义了算法家族,子类完全去实现了,不同的子类实现的算法完全不同。也就是整体都由子类完成,算法也改变了。模板方法模式是部分实现,策略模式是整体实现,这就是它们的区别。
0 0
- 读书笔记8:模板方法模式
- 读书笔记8:模板方法模式
- 《HeadFirst设计模式》读书笔记-第8章-模板方法模式
- 设计模式读书笔记-----模板方法模式
- 设计模式读书笔记-----模板方法模式
- 设计模式读书笔记-----模板方法模式
- 大话设计模式读书笔记之模板方法
- 模板方法模式(Head First设计模式 读书笔记)
- 大话设计模式读书笔记(八) 模板方法模式
- 第十章 考题抄错会做也白搭-模板方法模式(读书笔记)
- 设计模式读书笔记:Template Method(模板方法)
- HeadFirst设计模式_读书笔记_008_模板方法
- 设计模式(8)--模板方法模式
- HeadFirst 设计模式 8模板方法模式
- 《Android源码设计模式》读书笔记 (15) 第15章 模板方法模式
- 《Android源码设计模式解析与实战》读书笔记(十五)——模板方法模式
- 读书笔记--工厂方法模式
- 深入浅出模板方法模式
- NSUserDefaults
- HTML 的超链接 a 标签中如何设置其宽度和高度
- Firefox伪造请求头
- Integer.valueOf(String) 方法之惑
- 读书笔记7:原型模式
- 读书笔记8:模板方法模式
- Unity3d截图功能实现二(AR版)
- 【随行笔记】方向
- stm32f030c8t6 MCU进入低功耗模式
- Codeforces Round #286 (Div. 2) C. Mr. Kitayuta, the Treasure Hunter dp+范围压缩
- ios数据储存
- Unity3D Mono 加密
- Fragment
- 读书笔记9:面向对象设计原则