广州公司核名在哪个网站,帮助安装wordpress,可以做问卷赚钱的网站,赣州人才网招聘找工作什么是模板模式#xff1f;
模板方法模式#xff08;Template Method Pattern#xff09;#xff0c;又叫模板模式(Template Pattern)#xff0c;在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现#xff0c;但调用将以抽象类中定义的方式进行…什么是模板模式
模板方法模式Template Method Pattern又叫模板模式(Template Pattern)在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现但调用将以抽象类中定义的方式进行。 简单说模板方法模式定义一个操作中的算法的骨架而将一些步骤延迟到子类中使得子类可以不改变一个算法的结构就可以重定义该算法的某些特定步骤这种类型的设计模式属于行为型模式。
Java设计模式——模板方法模式【Template Method Pattern】作者止步前行 简单的说我要做咖啡有的咖啡放糖有的放牛奶有的啥也不放。但是放调味品之前的操作是一样的比如清洗咖啡豆研磨咖啡豆等等操作。 我们怎么在OOP编程中体现出来他们的相同与不同呢 这时就可以用到模板模式主要思想是 把相同的步骤写在父类当中不同的步骤成为抽象方法让不同的子类继承父类后重写父类的方法。 这就实现了相同的方法不用动而不同的方法各自实现的需求。
代码演示
简单的模板模式
父类
public abstract class Building {//模板方法做成final不让子类去覆盖final void make(){step1();step2();step3();step4();}void step1(){System.out.println(画图纸);}void step2(){System.out.println(盖地基);}void step3(){System.out.println(往上搭);}// 抽象方法子类继承后各自重写。abstract void step4();
}子类
public class JingZiTa extends Building{Overridevoid step4() {System.out.println(搭金塔);}
}Main方法
public class Client {public static void main(String[] args) {JingZiTa jingZiTa new JingZiTa();jingZiTa.make();}
}效果 这就是搭金字塔的四个步骤。
进阶带有钩子函数的模板模式
如果我想建个房子3个步骤就够了根本不需要第四步。怎么办 这时我们定义一个方法叫做钩子函数当子类又自定义需求时就可以重写它。这个函数不是必须要重写的
父类
public abstract class Building {void make(){step1();step2();step3();// 进行判断是否要执行第四步。if(shouldStep4()){step4();}}void step1(){System.out.println(画图纸);}void step2(){System.out.println(盖地基);}void step3(){System.out.println(往上搭);}/*** 钩子函数* return 默认开启执行第四步。*/boolean shouldStep4(){return true;}abstract void step4();
}子类 public class JingZiTa extends Building{Overridevoid step4() {System.out.println(搭金塔);}// 返回false不执行第四步Overrideboolean shouldStep4() {return false;}
}Main方法
public class Client {public static void main(String[] args) {JingZiTa jingZiTa new JingZiTa();jingZiTa.make();}
}效果 模板模式的优缺点
优点
最大程度的复用代码。既统一了算法也提供了很大的灵活性。
缺点
每一个具体实现都要新增一个类。造成了系统的庞大。