package com.cheng.zenofdesignpatterns.patterns.templatemethod.common;
/**
* 抽象模板类
*/
public abstract class AbstractClass {
// 基本方法
protected abstract void doSomething();
// 基本方法
protected abstract void doAnything();
// 模板方法
public final void templateMethod() {
/**
* 调用基本方法,完成相关的逻辑
*/
this.doSomething();
this.doAnything();
System.out.println("AbstractClass==>templateMethod()");
}
/**
* 基本方法
* 也叫做基本操作,是由子类实现的方法,并且在模板方法中被调用
* 模板方法
* 可以有一个或几个,一般是一个具体方法,也就是一个框架,实现对基本方法的调度,
* 完成固定的逻辑
*
* 注意
* 为了防止恶意的操作,一般模板方法都加上final关键字,不允许被覆写
* 抽象模板中的基本方法尽量设计为protected类型,符合迪米特法则,不需要暴露的
* 属性或方法尽量不要设置为protected类型,实现类若非必要,尽量不要扩大父类中
* 的访问权限
*/
}