博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA设计模式-工厂模式(代码示例)
阅读量:4637 次
发布时间:2019-06-09

本文共 4734 字,大约阅读时间需要 15 分钟。

结构

 

MySort.java   实际业务中我们可能会使用任意一种排序方法
package pers.zander.edu.arithmetic.sort;/** * 排序接口 * @author * @time 2016-5-10 上午9:55:05 */public interface MySort {    //排序抽象方法,子类自定义实现    public void insertSort(String name,int array[]);}

MySortErfenImpl.java  

package pers.zander.edu.arithmetic.sort;/** * 二分法实现排序 * @author * @time 2016-5-10 上午9:55:45 */public class MySortErfenImpl implements MySort{    @Override    public void insertSort(String name, int[] array) {        for (int i = 0; i < array.length; i++) {            int a = array[i];            int l = 0;            int r = i-1;            int m = 0;            while(l<=r){                m = (l+r)/2;                if(a
= l; j--) { array[j+1]=array[j]; } if(l!=i){ array[l]=a; } } } }

MySortZhijieImpl.java

package pers.zander.edu.arithmetic.sort;/** * 直接法实现排序 * @author * @time 2016-5-10 上午9:56:15 */public class MySortZhijieImpl implements MySort{    @Override    public void insertSort(String name,int[] array) {        for (int i = 1; i < array.length; i++) {            int a = array[i];            for (int j = 0; j < i; j++) {                int b = array[j];                if (a < b) {                    int c = array[i];                    array[i] = array[j];                    array[j] = c;                }            }        }            }}

 

MySortXierImpl.java

package pers.zander.edu.arithmetic.sort;/** * 希尔法实现排序 * @author * @time 2016-5-10 上午9:56:01 */public class MySortXierImpl implements MySort{    @Override    public void insertSort(String name, int[] array) {        int l = array.length;        int s = 0;        int m = l/2;        while (true) {            m = m-1;            for (int i = 0; i < array.length-m; i++) {                s++;                if(array[i]>array[i+m]){                    int temp = array[i];                    array[i]=array[i+m];                    array[i+m]=temp;                }            }            if(m==1){                break;            }        }        System.out.println(s);    }    }

SortFactory.java   工厂抽象类

package pers.zander.edu.arithmetic.sort;/** * 排序工厂抽象类 * @author * @time 2016-5-10 上午9:56:28 */public abstract class SortFactory implements MySort{    public abstract MySort createZhijie();    public abstract MySort createXier();    public abstract MySort createErfen();        public abstract MySort createSort(String name);}

SortFactoryImpl.java 工厂实现类 

package pers.zander.edu.arithmetic.sort;/** * 排序工厂实现类 * @author * @time 2016-5-10 上午9:56:43 */public class SortFactoryImpl extends SortFactory{    @Override    public void insertSort(String name,int[] array) {        if("zhijie".equals(name)){             new MySortZhijieImpl().insertSort("",array);        }else if("erfen".equals(name)){             new MySortErfenImpl().insertSort("",array);        }else if("xier".equals(name)){             new MySortXierImpl().insertSort("",array);        }else if("maopao".equals(name)){             new MySortMaopaoImpl().insertSort("",array);        }    }    @Override    public MySort createSort(String name) {        if("zhijie".equals(name)){            return new MySortZhijieImpl();        }else if("erfen".equals(name)){            return new MySortErfenImpl();        }else if("xier".equals(name)){            return new MySortXierImpl();        }else{            return null;        }    }        @Override    public MySortZhijieImpl createZhijie() {        // TODO Auto-generated method stub        return new MySortZhijieImpl();    }    @Override    public MySortXierImpl createXier() {        // TODO Auto-generated method stub        return new MySortXierImpl();    }    @Override    public MySortErfenImpl createErfen() {        // TODO Auto-generated method stub        return new MySortErfenImpl();    }}

TestFactorySort.java

package pers.zander.edu.arithmetic.sort;/** * 测试类 * @author * @time 2016-5-10 上午9:58:08 */public class TestFactorySort {    public static void main(String[] args) {        SortFactory sf = new SortFactoryImpl();        int array[]={3,5,2,78,55,45,36,47,89,54,16,77,0,89};        for (int i = 0; i < array.length; i++) {            System.out.print(array[i]+",");        }        System.out.println("");        //1-在这里判断需要用哪个排序方法//        sf.createXier().insertSort("",array);        //2//        MySortZhijieImpl ms = (MySortZhijieImpl) sf.createSort("zhijie");//        if(ms!=null){//            ms.insertSort("",array);//        }        //3-推荐 代码简洁        sf.insertSort("maopao", array);        for (int i = 0; i < array.length; i++) {            System.out.print(array[i]+",");        }    }}

 

欢迎各位大神来指教。。。

转载于:https://www.cnblogs.com/zanderblogs/p/5523555.html

你可能感兴趣的文章
计算多项式的值
查看>>
DP(动态规划)
查看>>
chkconfig
查看>>
TMS320F28335项目开发记录2_CCS与JTAG仿真器连接问题汇总
查看>>
最强的篮球队和马尔可夫模型
查看>>
hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询
查看>>
cocos2d-x 音效中断问题
查看>>
设计模式简要笔记
查看>>
子分类账知识学习(汇总网上比较有用的资料)
查看>>
pyQt 每日一练习 -- 登录框
查看>>
wp 删除独立存储空间文件(多级非空文件夹删除)
查看>>
Loadrunner安装使用入门
查看>>
smartupload 上传文件时 把页面编码改成gbk 解决乱码
查看>>
EPS是什么格式
查看>>
input禁止显示历史输入记录
查看>>
Python的数据库操作(Sqlalchemy)
查看>>
2.抽取代码(BaseActivity)
查看>>
My simplified pickit2 clone
查看>>
Redis 入门知识
查看>>
夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
查看>>