模板方法模式展示
-
模板方法作为我最喜欢的设计模式,除了刚开始学的时候觉得很好理解以外,重点是他把很多可以重复的逻辑统一化了,只要将最上层的逻辑抽象出来,构建一个抽象基类,就可以使用了。
-
场景:早上我们起床出门,这是一件大家统一,基本没有太大区别的事情。我们就可以按照这样子的逻辑抽象出来。
基本上,就是这样子的套路,至于里面的细节
🤓你用什么牙膏?
🤓你穿什么衣服
🤓你穿什么鞋子
▪️▪️▪️▪️▪️▪️
这些都属于细节,我不关注,你不同的人,就有不同的操作,那我们就可以这么来定义一个Peroson类
public abstract class Person {
Person(String name){
this.name = name;
}
protected String name;
abstract void getUp();
abstract void brushTooth();
abstract void dress();
abstract void wearShoes();
void getupAndOuting(){//规定的一整套动作
getUp();
brushTooth();
dress();
wearShoes();
}
}
然后他的子类,只需要将里面的几个细节方法,给实现就完事了,多·好用!!!
🤵 乔丹,用黑人牙膏刷牙,穿AJ,穿一件T恤。
public class Jordan extends Person{
Jordan(){
super("Jordan");
}
@Override
void getUp() {
System.out.println(name + " getUp");
}
@Override
void brushTooth() {
System.out.println(name + " use BlackPerson to Brush");
}
@Override
void dress() {
System.out.println(name + " dress Tshirt");
}
@Override
void wearShoes() {
System.out.println(name + " wear AJ");
}
}
👷科比,用佳洁士刷牙,穿Kobe6,穿毛衣
public class Kobe extends Person{
Kobe(){
super("Kobe");
}
@Override
void getUp() {
System.out.println("Kobe get up");
}
@Override
void brushTooth() {
System.out.println("Kobe use jiajieshi to brush");
}
@Override
void dress() {
System.out.println("Kobe dress Sweater");
}
@Override
void wearShoes() {
System.out.println("Kobe wear kobe6");
}
}
多简单、逻辑又清楚,直接调用,就非常简单
public static void main(String[] args){
Person Jordan = new Jordan();
Person Kobe = new Kobe();
Jordan.getupAndOuting();
Kobe.getupAndOuting();
}
输出结果
Jordan getUp
Jordan use BlackPerson to Brush
Jordan dress Tshirt
Jordan wear AJ
Kobe get up
Kobe use jiajieshi to brush
Kobe dress Sweater
Kobe wear kobe6
今天的模板方法,简单,实用!