23种设计模式之模板方法(Template Method)
2011-06-05 13:37
591 查看
23种设计模式之模板方法(Template Method)
模板方法模式是一种类的行为型模式,用于定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,其缺点是对于不同的实现,都需要定义一个子类,这会导致类得个数增加,但是更加符合类职责的分配原则,使得类得内聚性得以提高。
优点:代码重用的基础技术
使用场景:
1)想要一次实现算法的不变部分,而使用子类实现算法的可变行为。
2)当子类间的通用行为需要分解、定位到通用类的时候,这样可以避免代码重复的问题。
Template Method
模板方法模式是一种类的行为型模式,用于定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,其缺点是对于不同的实现,都需要定义一个子类,这会导致类得个数增加,但是更加符合类职责的分配原则,使得类得内聚性得以提高。
优点:代码重用的基础技术
使用场景:
1)想要一次实现算法的不变部分,而使用子类实现算法的可变行为。
2)当子类间的通用行为需要分解、定位到通用类的时候,这样可以避免代码重复的问题。
Template Method
public abstract class Document { /// <summary> /// 存储文档数据 /// </summary> public void Save() { Console.WriteLine("存储文档数据"); } /// <summary> /// 打开文档 /// </summary> /// <param name="docName"></param> public void Open(string docName) { Console.WriteLine("打开文档"); } /// <summary> /// 关闭文档 /// </summary> public void Close() { Console.WriteLine("关闭文档"); } public abstract void Read(string docName);//抽象方法读取文档 }
public abstract class Application { private IList<Document> docs = new List<Document>();//文档对象列表 /// <summary> /// 判断是否可以打开指定文档 /// </summary> /// <param name="docName"></param> /// <returns>返回true时表示可以打开;返回false时表示不可打开</returns> public bool CanOpenDocument(string docName) { bool flag = true; // return flag; } public void AddDocument(Document aDocument) { docs.Add(aDocument);//将文档对象添加到文档对象集合当中 Console.WriteLine("加入了aDocument对象"); } public abstract Document DoCreateDocument();//抽象方法 创建一个文档对象 /// <summary> /// 打开指定文档 /// </summary> /// <param name="docName">文档路径</param> public void OpenDocument(string docName) { if (!CanOpenDocument(docName)) { Console.WriteLine("文档无法打开!"); return; } Document adoc = DoCreateDocument(); adoc.Open(docName); adoc.Read(docName); AddDocument(adoc); } }
相关文章推荐
- java23种常用设计模式之模板方法模式(Template Method)
- 【Unity3D与23种设计模式】模板方法模式(Template Method)
- Java开发中的23种设计模式之十四:模板方法模式(Template Method)
- 【行为型模式】模板方法模式(template method)之23种java设计模式
- Java开发中的23种设计模式详解----模板方法模式(Template Method)
- 23种设计模式之模板方法模式(template method)
- 23种设计模式之模板方法(Template Method)
- 深入浅出设计模式-009:模板方法模式(Template Method Pattern)
- 设计模式实现(七)--- 模板方法模式(Template Method)
- 设计模式学习-Template Method(模板方法)
- Java设计模式透析之 —— 模板方法(Template Method)
- 设计模式二十三:template method(模板方法)——类行为模式
- Java设计模式透析之 —— 模板方法(Template Method)
- 23种设计模式(14)-模板方法模式
- 设计模式 - 模板方法模式(template method pattern) 具体解释
- 设计模式 - 模板方法模式(template method pattern) JFrame 详解
- Java设计模式之模板方法模式(Template Method)
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 设计模式——模板方法模式(Template Method)