• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
gooliugle
博客园    首页    新随笔    联系   管理    订阅  订阅
大话设计模式读书笔记8----模板方法模式(TemplateMethod)

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

1、模板方法是通过把不变行为搬移到父类,去除子类中的重复代码来体现优势。

2、模板方法模式就是提供了一个很好的代码复用平台。

模板方法模式代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 
 5 namespace TemplateMethod
 6 {
 7     class Program
 8     {
 9         static void Main(string[] args)
10         {
11             AbstractClass c;
12             c = new ConcreteClassA();
13             c.MethodOne();
14             c.MethodTwo();
15             Console.WriteLine();
16             c = new ConcreteClassB();
17             c.MethodOne();
18             c.MethodTwo();
19             Console.ReadLine();
20         }
21     }
22     public abstract class AbstractClass
23     {
24         public abstract void MethodOne();
25         public abstract void MethodTwo();
26         //TemplateMethod
27         public void TemplateMethod()
28         {
29             MethodOne();
30             MethodTwo();
31             Console.WriteLine(" ");
32         }
33     }
34     public class ConcreteClassA : AbstractClass
35     {
36         public override void MethodOne()
37         {
38             Console.WriteLine("具体类A方法1实现");
39         }
40         public override void MethodTwo()
41         {
42             Console.WriteLine("具体类A方法2实现");
43         }
44     }
45     public class ConcreteClassB : AbstractClass
46     {
47         public override void MethodOne()
48         {
49             Console.WriteLine("具体类B方法1实现");
50         }
51         public override void MethodTwo()
52         {
53             Console.WriteLine("具体类B方法2实现");
54         }
55     }
56 }
57 


 

 

posted on 2010-04-25 21:41  gooliugle  阅读(380)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3