在java中有很多设计模式,比如模板方法模式,我不是很理解,请用代码举例进行讲解
时间: 2024-03-29 13:40:17 浏览: 46
当我们需要实现一个算法时,可以使用模板方法模式。模板方法模式是一种行为设计模式,它定义了一个算法的骨架,允许子类在不改变算法结构的情况下重写算法的某些步骤。
让我们举一个简单的例子,假设我们需要实现一个排序算法,可以使用模板方法模式来实现。
首先,我们定义一个抽象类`SortAlgorithm`,其中包含排序算法的骨架:
```java
public abstract class SortAlgorithm {
public final void sort(int[] array) {
if (array == null || array.length <= 1) {
return;
}
doSort(array);
}
protected abstract void doSort(int[] array);
}
```
在上面的代码中,`sort`方法是算法的骨架,它首先判断数组是否为空或者只有一个元素,如果是,则直接返回。否则,它会调用`doSort`方法,该方法是抽象的,需要子类实现。
接下来,我们可以创建一个子类`BubbleSort`,实现`doSort`方法,完成具体的排序操作:
```java
public class BubbleSort extends SortAlgorithm {
@Override
protected void doSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - i - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
}
```
在上面的代码中,我们实现了冒泡排序算法,重写了`doSort`方法。
最后,我们可以使用这个算法来对数组进行排序:
```java
public class Main {
public static void main(String[] args) {
int[] array = {5, 2, 7, 3, 6, 1, 4};
SortAlgorithm algorithm = new BubbleSort();
algorithm.sort(array);
System.out.println(Arrays.toString(array));
}
}
```
在上面的代码中,我们首先创建了一个数组,然后创建了一个`BubbleSort`对象,最后调用`sort`方法进行排序。
这就是模板方法模式的一个简单例子,它允许子类在不改变算法结构的情况下重写算法的某些步骤。
阅读全文