模板设计模式

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

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

案例:

  • 模板类
/**
* Teacher和Student都是Person
* 1. Person就是模板方法设计模式当中的模板类。
* 2. day()方法就是模板方法设计模式当中的模板方法。
*/
public abstract class Person {
//    public Person(){
//        System.out.println("Person构造方法执行了");
//    }

   /*模板方法
添加了final之后,这个方法无法被覆盖,这样核心的算法也可以得到保护。
模板方法定义核心的算法骨架,具体的实现步骤可以延迟到子类当中去实现。
核心算法一方面是得到了保护,不能被改变。另外一方面就是算法得到了重复使用。
另外代码也得到了服用,因为算法中某些步骤的代码是固定的。这些固定的代码不会随着子类的变化而变换,这一部分代码可以写到模板类当中。
 */
   public final void day(){
       qichuang();
       eat();
       doSome();
       sleep();
   }
   // 其中的某些步骤,不会随着子类的变化而变化,这些代码可以写到父类中,得到代码复用。
   public void qichuang(){
       System.out.println("起床");
   }
   public void eat(){
       System.out.println("吃饭");
   }
   public void sleep(){
       System.out.println("睡觉...");
   }
   // 这一步是要做,但是具体这一步怎么做,子类说了算。
   public abstract void doSome();
}
  • Students类
public class Students extends Person{
    @Override
    public void doSome() {
        System.out.println("学生开始学习了!");
    }
}
  • Teachers类
public class Teachers extends Person{
    @Override
    public void doSome() {
        System.out.println("老师开始授课了!");
    }
}
  • 测试类
public class Test {
    public static void main(String[] args) {
        Person p1 = new Students();
        p1.day();
        System.out.println("~~~~~~~~~~~~~~~~");
        Person p2 = new Teachers();
        p2.day();
    }
}

结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值