第13章 模版方法模式(Template Method)

原文  第13章 模版方法模式(Template Method)

模板模式

 

 

模板模式

举例:模拟下数据库的update方法,先删除在插入。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
     abstract  class  SqlManage
     {
         public  string  connStr;
         //虚方法 子类可以重写
         public  virtual  void  SetConnStr()
         {
           connStr= "Server=Rj-097;User Id=sa;Password=sa;Database=Northwind" ;
         }
         public  abstract  void  Delete();
         public  abstract  void  Insert();
   
         public  void  Update()
         {
           SetConnStr();
           Delete();
           Insert();
         }
        
     }
     /// <summary>
     /// SqlServer的修改方法具体实现
     /// </summary>
     class  SqlServer : SqlManage
     {
         public  override  void  Delete()
         {
             //SqlServer的删除数据的方法
         }
         public  override  void  Insert()
        
           //SqlServer的插入数据的方法
          }
     }
     /// <summary>
     /// MySql的修改方法具体实现
     /// </summary>
     class  MySql : SqlManage
     {
         public  override  void  Delete()
         {
             //MySql的删除数据的方法
         }
         public  override  void  Insert()
         {
             //MySql的插入数据的方法
         }
     }

 

调用mysql的更新方法:

1
2
3
4
5
6
7
8
9
     class  Program
     {
         static  void  Main( string [] args)
         {
             //mysql的更新方法
             SqlManage mySql =  new  MySql();
             mySql.Update();
         }
     }

模板模式,用的非常的广泛。核心的就在于能自动执行子类实现的方法。

 

要点:

1Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。它用最简洁的机制(虚函数的多态性)为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。

2.除了可以灵活应对子步骤的变化外,“不用调用我,让我来调用你”的反向控制结构是Template Method的典型应用。

3.在具体实现方面,被Template Method调用的虚方法可以具有实现,也可以没有任何实现(抽象方法,纯虚方法),但一般推荐将它们设置为protected方法。[李建忠]

   

   设计模式系列文章入口

你可能感兴趣的:(template)