zoukankan      html  css  js  c++  java
  • 模板方法模式

      模板方法模式是把不变行为搬到超类,从而去除子类的重复代码。至于需要变动的行为,通过多态,在子类中覆盖掉超类的同名方法。

    这种方法其实是最常用的oo方法,我们经常会这样来设计超类和子类。问题是,我们在前面讲过,子类必须能完全代替父类,要倒转依赖。如果在子类中重载超类同名方法,不是违背了这个原则吗?在看《大话设计模式》的时候,我有这个疑问。不过,从他举的例子来看,也的确有道理。模板方法中的超类和子类虽然是继承关系,事实上却不是真正意义上的继承。在鸟和企鹅的例子中,鸟充当的是父类的角色,企鹅属于鸟,同时会对鸟进行扩展。但考卷这个例子中,超类充当的不是父类,允当的是模板,子类和父类完全一样,没有扩展,只有分数那个地方有个重载。

    也就是说,如果超类充当的是模板的角色,就适合用重载。如果超类充当的是父类的角色,那么就不要用重载了,不宜维护,这个时候就应该选择策略模式或者工厂模式来抽出需要重载的方法。

    话说回来了,既然模板方法模式只是需要修改小部分的内容,并不会扩展,为什么不通过给构造函数传参来实例化不同的对象呢?这样不是更简单吗?
  • 相关阅读:
    Asp.net开发必备51种代码
    防止页面被多次提交
    c#发送邮件.net1.1和.net2.0中的两个方法
    鼠标移至小图,自动显示相应大图
    NET(C#)连接各类数据库集锦
    在C#中对XML的操作
    Window.ShowModalDialog使用总结
    SQLServer2005 添加用户,及操作权限
    定时器
    Global.asax.cs中的方法的含义
  • 原文地址:https://www.cnblogs.com/cly84920/p/4427099.html
Copyright © 2011-2022 走看看