好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

选择实现—简单工厂

选择实现—简单工厂

之前写了好多关于排序算法的文章,基本上都是总结性质的,其实排序算法的研究很细致,但是我的博客都基本上只是给出了大体的思路和Java程序实现,算法写起来比较繁琐,感兴趣的话,自己去研究下吧,我推荐算法导论这本书。

  看到这么多的排序算法,如果要将其真正用到Java程序里边的话,未免也太复杂了,因为要为每一种算法在使用之前都要先创建一个实例,然后才能使用,这样就暴露了实现,不符合面向对象的基本要求,因此建立一个工厂类,然后让工厂来负责具体的算法的创建,客户端程序员就不必知道具体的算法了,而且,这样做就可以统一接口。

  简单工厂的本质是: 封装实现 。

  需要注意的是简单工厂的重点在于选择,实现是已经做好了的。简单工厂的目的为在于客户端来选择相应的实现,从而使得客户端和实现之间的解耦。这样一来,具体的实现,就不用变动客户端的代码了,这个变化会被简单工厂吸收和屏蔽。

  使用我之前写过的算法的例子,可以这样来应用简单工厂模式。

  首先,建立一个具体算法的接口,实现面向接口的编程。接口定义如下:

  

SortAlgorithm.java

  然后,建立每一个算法的具体实现,每一个算法都要实现这个接口。

  

InsertionSort.java

MergeSort.java

HeapSort.java

QuickSort.java

  接下来,建立一个工厂类来为客户端选择具体的算法实现。

SortFactory.java

  其中反射用的配置文件如下:

FactoryConfig.properties

  当然,还有之前简化的打印类:

Print.java

  还有定义算法名称的常量类:

AlgorithmConstants.java

  最后,来写一个测试类来测试一下吧!

SortMain.java

  输出为:

  从这个结果可以看出,所有的算法都能完成排序的工作,而且用了简单工厂模式之后,客户端程序就再也不需要知道具体的排序算法的实现了。

 

标签:  设计模式

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于选择实现—简单工厂的详细内容...

  阅读:36次

上一篇: JavaIO知识总结2

下一篇:深入探析c# Socket