首页 > 代码库 > 第13章 模版方法模式(Template Method)
第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(); } } |
模板模式,用的非常的广泛。核心的就在于能自动执行子类实现的方法。
要点:
1.Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。它用最简洁的机制(虚函数的多态性)为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。
2.除了可以灵活应对子步骤的变化外,“不用调用我,让我来调用你”的反向控制结构是Template Method的典型应用。
3.在具体实现方面,被Template Method调用的虚方法可以具有实现,也可以没有任何实现(抽象方法,纯虚方法),但一般推荐将它们设置为protected方法。[李建忠]
设计模式系列文章入口
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。