Java设计模式-6-模板方法模式

来源:互联网 发布:医疗器械注册软件研究 编辑:程序博客网 时间:2024/05/20 18:54

一、介绍

定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。

二、UML类图


三、代码实现

模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印,打印功能好实现,排序就有点麻烦了。但是A有办法,先把打印功能完成,排序功能另找人做。

abstract class AbstractSort {/** * 将数组array由小到大排序 *  * @param array */protected abstract void sort(int[] array);public void showSortResult(int[] array) {this.sort(array);System.out.print("排序结果:");for (int i = 0; i < array.length; i++) {System.out.printf("%4s", array[i]);}}}

class ConcreteSort extends AbstractSort {@Overrideprotected void sort(int[] array) {for (int i = 0; i < array.length - 1; i++) {selectSort(array, i);}}private void selectSort(int[] array, int index) {int MinValue = 32767; // 最小值变量int indexMin = 0; // 最小值索引变量int Temp; // 暂存变量for (int i = index; i < array.length; i++) {if (array[i] < MinValue) { // 找到最小值MinValue = array[i]; // 储存最小值indexMin = i;}}Temp = array[index]; // 交换两数值array[index] = array[indexMin];array[indexMin] = Temp;}}

测试类

public class Client {             public static int[] a = { 10, 32, 1, 9, 5, 7, 12, 0, 4, 3 }; // 预设数据数组public static void main(String[] args) {AbstractSort s = new ConcreteSort();s.showSortResult(a);}}

0 0