抽象类的应用知识:模板方法模式
什么是模板方法模式
使用场景说明:当系统中出现同一个功能多处在开发,而该功能中大部分代码是一样的,只有其中部分可能不同的时候。
模板方法模式实现步骤
1.把功能定义成一个所谓的方法模板,放在抽象类中,模板方法中只定义通用且能确定的代码。
2.模板方法中不能决定的功能定义成抽象方法让具体子类去实现。
案例

package Day221118; public class StudentChild extends Student{ @Override public String writeMain() { return "张星特是一位19岁的青年歌手"; } }
package Day221118; public class StudentMiddle extends Student{ @Override public String writeMain() { return "易烊千玺是一位21岁的影视歌全栖发展的艺人"; } }
package Day221118; public abstract class Student { //声明模板方法 public void write(){ System.out.println("\t\t\t\t《我的偶像》"); System.out.println("斯为泰山而不骄,我们都是泰山!"); //正文(每个子类都要写,但情况不同) //因此模板方法把正文部分交给具体的子类进行完成 System.out.println( writeMain()); System.out.println("我的偶像为我平淡的生活增添了色彩!"); } public abstract String writeMain(); }
package Day221118; public class Test { public static void main(String[] args) { //目标:理解模板方法模式的思想和使用步骤 StudentMiddle S=new StudentMiddle(); S.write(); System.out.println("----------------------------------------"); StudentChild S2=new StudentChild(); S2.write(); } }
模板方法我们是建议用final修饰的,这样会更专业,那么为什么呢?
模板方法是给子类直接使用的,不是让子类重写的,一旦子类重写了模板方法,则模板方法就失效了,因此,加上final后可以防止子类重写了模板方法,这样更专业,安全。
模板方法解决了什么问题?
1.提高了代码的复用性
2.模板方法已经定义了通用结构,模板方法不能确定的部分定义成抽象方法,交给子类实现,因此,使用者只需关系自己需要实现的功能即可。

浙公网安备 33010602011771号