模板方法模式 - Design Patterns 学习笔记 (7)

有这么一种情况,有很多类会有一些相似的逻辑,但又不完全一样,只有一些微小的差别,为了这些微小的差别,很多时候我们会一拍脑袋,把这些逻辑不厌其烦的写了一遍又一遍.
重复 = 易错 + 难于变化
为了解决这个问题,我们可以充分利用多态的特性,将这些微小的变化延迟到子类.
每个子类只要实现这些小变化就可以了.

抽象类,封装不变的内容:
  1.     public abstract class Person
  2.     {
  3.         public abstract string Name
  4.         {
  5.             get;
  6.         }
  7.         public void Introduce()
  8.         {
  9.             Console.WriteLine("My name is "+Name);
  10.         }
  11.     }
子类,封装微小的变化
  1.     public class Nyzhl:Person
  2.     {
  3.         public override string Name
  4.         {
  5.             get 
  6.             {
  7.                 return "nyzhl";
  8.             }
  9.         }
  10.     }
测试类
  1.     public class Test
  2.     {
  3.         static void Main()
  4.         {
  5.             Person nyzhl = new Nyzhl();
  6.             nyzhl.Introduce();
  7.         }
  8.     }
结果:My name is nyzhl


很简单吧,让我想起了前些天写的 数据表实体对象类(http://blog.csdn.net/nyzhl/archive/2008/10/14/3075612.aspx)
各个类都有相似的数据库操作,我当时的做法是把变化以受保护构造函数的形式,让子类传递给父类构造函数.
和模板方法模式相比,可能这样的做法稍显笨拙,但似乎也不是特别差O(∩_∩)O哈哈~
等等我再用模板方法模式重构一下,由于代码太长,就不贴上来啦

,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值