Factory工厂模式

本文介绍了一种使用工厂模式创建不同排序算法实例的设计方法。通过一个通用接口可以根据具体需求选择并应用选择排序、冒泡排序、线性插入排序或快速排序来对整型数组进行升序排列。

/**
* 模式名称:工厂模式
* 模式特征:通过一个通用的接口创建不同的类对象
* 模式用途:面向接口编程
*
*/
public class Factory
{
//各种排序方法的命令标示
public static final String SELECTION_SORT="selection";
public static final String BUBBLE_SORT="bubble";
public static final String LINEARINSERT_SORT="linear";
public static final String QUICK_SORT = "quick";

public static ISortNumber getOrderNumber(String id)
{
//String的equalsIgnoreCase方法在比较两个字符串是否相等时不区分大小写
if(SELECTION_SORT.equalsIgnoreCase(id))
{
return new SelectionSort();
}
else if(BUBBLE_SORT.equalsIgnoreCase(id))
{
return new BubbleSort();
}
else if(LINEARINSERT_SORT.equalsIgnoreCase(id))
{
return new LinearInsertSort();
}
else if(QUICK_SORT.equalsIgnoreCase(id))
{
return new QuickSort();
}
else
{
return null;
}
}

/**
* 输出整型数组
* @param array
*/
public static void printIntArray(int[] array)
{
if(array!=null)
{
for(int i=0;i<array.length;i++)
{
System.out.print(array[i] + " ");
}
System.out.println();
}
}

public static void main(String[] args)
{
int[] intarray = new int[]{6,1,3,5,4};

System.out.println("排序前的数组是:");
printIntArray(intarray);
System.out.println("用选择排序法对数组进行升序排序后的结果是:");
int[] orderedArray = Factory.getOrderNumber(Factory.SELECTION_SORT)
.sortASC(intarray);
printIntArray(orderedArray);

System.out.println("用冒泡排序法对数组进行升序排序后的结果是:");
orderedArray = Factory.getOrderNumber(Factory.BUBBLE_SORT).sortASC(intarray);
printIntArray(orderedArray);

System.out.println("用线性插入排序法对数组进行升序排序后的结果是:");
orderedArray = Factory.getOrderNumber(Factory.LINEARINSERT_SORT).sortASC(intarray);
printIntArray(orderedArray);

System.out.println("用快速排序法对数组进行升序排序后的结果是:");
orderedArray = Factory.getOrderNumber(Factory.QUICK_SORT).sortASC(intarray);
printIntArray(orderedArray);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值