JavaWeb学习笔记十三:模板方法设计模式

模板方法设计模式

  • 什么是设计模式?

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

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

    • 在模板类的模板方法当中定义核心算法骨架,具体的实现步骤可以延迟到子类当中完成。
  • 模板类通常是一个抽象类,模板类当中的模板方法定义核心算法,这个方法通常是final的(但也可以不是final的)

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

  • 一个简单的模板方法设计模式

    package com.template;
    
    /**
     * Teacher和Student都是Person
     * 1、Person就是模板设计模式当中的模板类
     * 2、day()方法就是模板设计模式当中的模板方法
     */
    
    public abstract class Person {
    
        // 模板方法
        // 添加了final之后,这个方法无法被覆盖,核心的算法可以得到保护
        // 模板方法当中定义核心算法骨架,具体的实现步骤可以延迟到子类当中完成。
        // 核心算法得到了保护,不能被改变。算法也得到了重复使用
        // 代码也得到了复用,因为算法中某些步骤的代码是固定的。这些固定的代码不会随着子类的变化而变化,这一部分代码可以写到模板类当中
        public final void day(){
            qichaung();
            chifan();
            shangban();
            shuijiao();
        }
    
        public void qichaung() {
            System.out.println("起床");
        }
    
        public void chifan() {
            System.out.println("吃饭");
        }
    
        // 这一步骤由子类来做
        public abstract void shangban();
    
        public void shuijiao() {
            System.out.println("睡觉");
        }
    }
    
    package com.template;
    
    public class Teacher extends Person{
        @Override
        public void shangban() {
            System.out.println("教书");
        }
    }
    
    package com.template;
    
    public class Student extends Person{
        @Override
        public void shangban() {
            System.out.println("上学");
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值