选择实现—简单工厂
<div id="cnblogs_post_body"> 之前写了好多关于排序算法的文章,基本上都是总结性质的,其实排序算法的研究很细致,但是我的博客都基本上只是给出了大体的思路和Java程序实现,算法写起来比较繁琐,感兴趣的话,自己去研究下吧,我推荐算法导论这本书。看到这么多的排序算法,如果要将其真正用到Java程序里边的话,未免也太复杂了,因为要为每一种算法在使用之前都要先创建一个实例,然后才能使用,这样就暴露了实现,不符合面向对象的基本要求,因此建立一个工厂类,然后让工厂来负责具体的算法的创建,客户端程序员就不必知道具体的算法了,而且,这样做就可以统一接口。
简单工厂的本质是:封装实现。
需要注意的是简单工厂的重点在于选择,实现是已经做好了的。简单工厂的目的为在于客户端来选择相应的实现,从而使得客户端和实现之间的解耦。这样一来,具体的实现,就不用变动客户端的代码了,这个变化会被简单工厂吸收和屏蔽。
使用我之前写过的算法的例子,可以这样来应用简单工厂模式。
首先,建立一个具体算法的接口,实现面向接口的编程。接口定义如下:
<div class="cnblogs_code" >http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttp://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gifSortAlgorithm.java<div id="cnblogs_code_open_436956f2-41f8-4f64-af73-719e824d2dcd" class="cnblogs_code_hide"> 1 package com.alfred.sort; 2 3 public interface SortAlgorithm { 4 /** 5 * 将数组按照升序排序 6 * 7 * @param A 8 * int数组,按升序排列 9 */10 public void sort(int[] A);11 12 /**13 * 将数组按照升序或降序排序14 * 15 * @param A16 * int数组17 * @param isInc18 * 是否升序,true为升序,false为降序19 */20 public void sort(int[] A, boolean isInc);21 }
页:
[1]