听说你JavaWeb学的不好?(二十二)

50 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第22天,点击查看活动详情

接上

模板方法设计模式

  • 什么是设计模式?

    • 某个问题的固定的解决方案。(可以被重复使用。)
  • 你知道哪些设计模式?

    • GoF设计模式:

      • 通常我们所说的23种设计模式。(Gang of Four:4人组提出的设计模式)
      • 单例模式
      • 工厂模式
      • 代理模式
      • 门面模式
      • 责任链设计模式
      • 观察者模式
      • 模板方法设计模式
      • .....
    • JavaEE设计模式:

      • DAO
      • DTO
      • VO
      • PO
      • pojo
      • ....
    • ....

  • 什么是模板方法设计模式?

    • 在模板类的模板方法当中定义核心算法骨架,算法中某些内容的具体的实现步骤可以延迟到子类当中完成,使得子类可以不改变该算法结构的情况下改变某些内容的具体的实现
  • 模板类通常是一个抽象类,模板类当中的模板方法定义核心算法,这个方法通常是final的(但也可以不是final的)

  • 模板类当中的抽象方法就是不确定实现的方法,这个不确定怎么实现的事儿交给子类去做。

public abstract cLass Person {
​
    //核心算法一方面是得到了保护,不能被改变。算法得到了重复使用。
    //另外一方面代码也得到了复用,因为算法中某些步骤的代码是固定的。这些固定的代码不会随着子类的变化而变换,这一部分代码可以写到模板类当中。
​
    //模板类当中的模板方法
    public void day(){
        qiChuang();
        xiShu();
        chiZaoCan();
        doSome();
        chiWanFan();
        shuiJiao(); 
    }
​
    //其中的某些步骤,不会随着子类的变化而变化,这些代码可以写到父类中,得到代码复用。
    public void qiChuang() { System.out.println("起床"); }
    public void xiShu() { System.out.println("洗漱"); }
    public void chiZaoCan() { System.out.println("吃早餐"); }
    //模板类当中的抽象方法
    public abstract void doSome ();
    public void chiWanFan() { System.out.println("吃晚饭"); }
    public void shuiJiao() { System.out.println("睡觉"); }
}