请使用java代码给我详细示例
时间: 2024-04-13 09:28:09 浏览: 12
当然,请看下面的Java代码示例:
```java
abstract class BaseClass {
public final void templateMethod() {
fixedMethod();
customMethod();
anotherFixedMethod();
}
protected void fixedMethod() {
// 前面的固定逻辑
}
protected void anotherFixedMethod() {
// 后面的固定逻辑
}
protected abstract void customMethod();
}
class SubClassA extends BaseClass {
@Override
protected void customMethod() {
// SubClassA 的具体处理逻辑
}
}
class SubClassB extends BaseClass {
@Override
protected void customMethod() {
// SubClassB 的具体处理逻辑
}
}
public class TemplateMethodPatternExample {
public static void main(String[] args) {
BaseClass subClassA = new SubClassA();
subClassA.templateMethod();
BaseClass subClassB = new SubClassB();
subClassB.templateMethod();
}
}
```
在上述示例中,`BaseClass` 是抽象基类,其中的 `templateMethod` 是模板方法,定义了算法的骨架。`fixedMethod` 和 `anotherFixedMethod` 是固定逻辑,在基类中已经实现。`customMethod` 是需要子类实现的具体处理逻辑。
通过创建不同的子类(例如 `SubClassA` 和 `SubClassB`),您可以根据具体的需求实现不同的中间处理逻辑,而无需改变前后的固定逻辑。
在 `TemplateMethodPatternExample` 类中的 `main` 方法中,我们创建了 `SubClassA` 和 `SubClassB` 的实例,并调用它们的 `templateMethod` 方法。这样就可以按照不同的具体处理逻辑执行算法,而前后的固定逻辑保持不变。