您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
模板方法模式(Template Method Pattern)是一种行为设计模式,它在一个方法中定义了一个算法的骨架,允许子类在不改变算法结构的情况下,重新定义某些步骤的具体实现。这样可以使得子类可以复用父类的算法结构,同时保持代码的可扩展性和可维护性。
以下是一个使用模板方法模式统一Java操作流程的示例:
public abstract class AbstractClass {
// 模板方法
public final void templateMethod() {
baseOperation1();
requiredOperations1();
baseOperation2();
hook1();
requiredOperations2();
baseOperation3();
hook2();
requiredOperations3();
}
// 基本操作,由抽象类实现
public void baseOperation1() {
System.out.println("AbstractClass baseOperation1");
}
public void baseOperation2() {
System.out.println("AbstractClass baseOperation2");
}
public void baseOperation3() {
System.out.println("AbstractClass baseOperation3");
}
// 抽象方法,由子类实现
public abstract void requiredOperations1();
public abstract void requiredOperations2();
public abstract void requiredOperations3();
// 钩子操作,由子类选择实现或不实现
public void hook1() {
}
public void hook2() {
}
}
public class SubClass1 extends AbstractClass {
@Override
public void requiredOperations1() {
System.out.println("SubClass1 requiredOperations1");
}
@Override
public void requiredOperations2() {
System.out.println("SubClass1 requiredOperations2");
}
@Override
public void requiredOperations3() {
System.out.println("SubClass1 requiredOperations3");
}
@Override
public void hook1() {
System.out.println("SubClass1 hook1");
}
}
public class SubClass2 extends AbstractClass {
@Override
public void requiredOperations1() {
System.out.println("SubClass2 requiredOperations1");
}
@Override
public void requiredOperations2() {
System.out.println("SubClass2 requiredOperations2");
}
@Override
public void requiredOperations3() {
System.out.println("SubClass2 requiredOperations3");
}
@Override
public void hook2() {
System.out.println("SubClass2 hook2");
}
}
public class Client {
public static void main(String[] args) {
AbstractClass subClass1 = new SubClass1();
AbstractClass subClass2 = new SubClass2();
System.out.println("调用 SubClass1 的模板方法:");
subClass1.templateMethod();
System.out.println("\n调用 SubClass2 的模板方法:");
subClass2.templateMethod();
}
}
运行客户端(Client)代码,输出结果如下:
调用 SubClass1 的模板方法:
AbstractClass baseOperation1
SubClass1 requiredOperations1
SubClass1 requiredOperations2
SubClass1 hook1
SubClass1 requiredOperations3
AbstractClass baseOperation2
AbstractClass baseOperation3
调用 SubClass2 的模板方法:
AbstractClass baseOperation1
SubClass2 requiredOperations1
SubClass2 requiredOperations2
SubClass2 hook2
SubClass2 requiredOperations3
AbstractClass baseOperation2
AbstractClass baseOperation3
通过模板方法模式,我们可以将Java操作流程中的公共部分抽象为模板方法,子类可以根据需要实现或覆盖特定的步骤。这样可以实现代码的复用和扩展,同时保持代码的可维护性。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。