zoukankan      html  css  js  c++  java
  • 设计模式8---模板模式

    问题:有多个学生需要答题,如果用手抄的方式,题目很容易出错,而如果复印的话,大家题目都一致。

    业就是说:对于学生来说,除了答案不一致以为,其他都应该一致。

    业就是,尽可能的把相同的代码以父类的形式封装起来,

    而其他不同之处可以以多台的新式呈现!

    public abstract class AbstractTemplate {
        /**
         * 模板方法
         */
        public void templateMethod(){
            //调用基本方法
            abstractMethod();
            hookMethod();
            concreteMethod();
        }
        /**
         * 基本方法的声明(由子类实现)
         */
        protected abstract void abstractMethod();
        /**
         * 基本方法(空方法)
         */
        protected void hookMethod(){}
        /**
         * 基本方法(已经实现)
         */
        private final void concreteMethod(){
            //业务相关的代码
        }
    }
    public class ConcreteTemplate extends AbstractTemplate{
        //基本方法的实现
        @Override
        public void abstractMethod() {
            //业务相关的代码
        }
        //重写父类的方法
        @Override
        public void hookMethod() {
            //业务相关的代码
        }
    }

    默认钩子方法

      一个钩子方法常常由抽象类给出一个空实现作为此方法的默认实现。这种空的钩子方法叫做“Do Nothing Hook”。显然,这种默认钩子方法在缺省适配模式里面已经见过了,一个缺省适配模式讲的是一个类为一个接口提供一个默认的空实现,从而使得缺省适配类的 子类不必像实现接口那样必须给出所有方法的实现,因为通常一个具体类并不需要所有的方法。

      命名规则

      命名规则是设计师之间赖以沟通的管道之一,使用恰当的命名规则可以帮助不同设计师之间的沟通。

      钩子方法的名字应当以do开始,这是熟悉设计模式的Java开发人员的标准做法。在上面的例子中,钩子方法hookMethod()应当以do开头;在HttpServlet类中,也遵从这一命名规则,如doGet()、doPost()等方法。

  • 相关阅读:
    前端学习(21)~css学习:如何让一个元素水平垂直居中?
    前端学习(20)~css布局(十三)
    前端学习(19)~css3属性(十二):Flex布局图片详解
    前端学习(18)~css3属性学习(十一):动画详解
    前端学习(16)~css3属性学习(十)
    蓝桥---大臣的旅费(求树的直径)
    蓝桥---乘积最大(区间dp、数据水的话long long,暴力就能过)
    蓝桥---错误票据(注意输入)
    蓝桥---带分数(全排列)
    蓝桥---传球游戏(dp)
  • 原文地址:https://www.cnblogs.com/deman/p/4133216.html
Copyright © 2011-2022 走看看