//抽象模板类
public abstract class AbstractSort {
public abstract void sort(int[] array);
//防止子类覆盖使用final修饰
public final void printArray(int[] array) {
sort(array);
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
//具体实现类
public class QuickSort extends AbstractSort {
@Override
public void sort(int[] array) {
//使用快排算法实现
}
}
public class MergeSort extends AbstractSort {
@Override
public void sort(int[] array) {
//使用归并排序算法实现
}
}
public static void main(String[] args) {
int[] arr = {3,5,2,45,243,341,111,543,24};
//AbstractSort s = new MergeSort();
AbstractSort s = new QuickSort();
s.printArray(arr);
}
package com.qbz.test;
//抽象检测类(抽象模板方法)
abstract class AbstractCheck {
abstract void startup();
abstract void speeup();
abstract void brake();
abstract void stop();
// 防止子类覆盖使用final修饰
public final void check() {
startup();
speeup();
brake();
stop();
}
}
// 检测911
class Porsche911 extends AbstractCheck {
@Override
void startup() {
System.out.println("检测911启动");
}
@Override
void speeup() {
System.out.println("检测911加速");
}
@Override
void brake() {
System.out.println("检测911刹车");
// 检测方法标准
System.out.println("911刹车合格");
}
@Override
void stop() {
System.out.println("检测911熄火");
}
}
// 检测Cayma类
class PorscheCayma extends AbstractCheck {
@Override
void startup() {
System.out.println("检测Cayma启动");
}
@Override
void speeup() {
System.out.println("检测Cayma加速");
}
@Override
void brake() {
System.out.println("检测Cayma刹车");
// 检测方法标准
System.out.println("Cayma刹车合格");
}
@Override
void stop() {
System.out.println("检测Cayma熄火");
}
}
public class Main {
public static void main(String[] args) {
AbstractCheck ac = new Porsche911();
// 开始检测911
ac.check();
// 检测Cayma
AbstractCheck ac2 = new PorscheCayma();
ac2.check();
}
}
检测911启动
检测911加速
检测911刹车
911刹车合格
检测911熄火
检测Cayma启动
检测Cayma加速
检测Cayma刹车
Cayma刹车合格
检测Cayma熄火