一个父类下有多个实现类,现在要新增一个实现类且代码跟之前的一个实现类有大部分相似 有demo吗
时间: 2024-05-10 09:19:16 浏览: 49
可以使用模板方法模式来解决这个问题。模板方法模式是一种行为设计模式,它定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。在模板方法模式中,父类定义了一个算法的框架,而子类则可以根据需要重写该算法的某些步骤,同时保持算法的整体结构不变。
下面是一个简单的示例代码:
```java
abstract class AbstractClass {
public void templateMethod() {
stepOne();
stepTwo();
stepThree();
}
protected void stepOne() {
// 实现步骤一
}
protected abstract void stepTwo();
protected void stepThree() {
// 实现步骤三
}
}
class ConcreteClass1 extends AbstractClass {
@Override
protected void stepTwo() {
// 实现 ConcreteClass1 特有的步骤二
}
}
class ConcreteClass2 extends AbstractClass {
@Override
protected void stepTwo() {
// 实现 ConcreteClass2 特有的步骤二
}
}
```
在上面的代码中,`AbstractClass` 是抽象类,定义了模板方法 `templateMethod()` 和三个步骤方法 `stepOne()`、`stepTwo()` 和 `stepThree()`。`stepOne()` 和 `stepThree()` 的实现是相同的,因此可以在抽象类中实现。`stepTwo()` 是一个抽象方法,由子类实现。
`ConcreteClass1` 和 `ConcreteClass2` 继承自 `AbstractClass`,并实现了 `stepTwo()` 方法。这两个类的差异只在于 `stepTwo()` 的实现。通过这种方式,可以轻松地添加新的子类,而不需要重复编写相同的代码。
使用模板方法模式可以使代码更加灵活,易于维护和扩展,并且可以避免重复代码。
阅读全文