结构

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<array[m]){
r = m-1;
}else{
l = m+1;
}
}
for (int j = i - 1; j >= 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]+",");
}
}
}

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

JAVA设计模式-工厂模式(代码示例)的更多相关文章

  1. 【设计模式】Java设计模式 -工厂模式

    [设计模式]Java设计模式 -工厂模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 目 ...

  2. 学习:java设计模式—工厂模式

    一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类: 1)简单工厂模式(Simple Facto ...

  3. 一张图搞定Java设计模式——工厂模式! 就问你要不要学!

    小编今天分享的内容是Java设计模式之工厂模式. 收藏之前,务必点个赞,这对小编能否在头条继续给大家分享Java的知识很重要,谢谢!文末有投票,你想了解Java的哪一部分内容,请反馈给我. 获取学习资 ...

  4. java设计模式—工厂模式

    一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...

  5. Java设计模式——工厂模式

    一.工厂模式分类 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类: (1)简单工厂模式(Simp ...

  6. 10.Java设计模式 工厂模式,单例模式

    Java 之工厂方法和抽象工厂模式 1. 概念 工厂方法:一抽象产品类派生出多个具体产品类:一抽象工厂类派生出多个具体工厂类:每个具体工厂类只能创建一个具体产品类的实例. 即定义一个创建对象的接口(即 ...

  7. Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)

    工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...

  8. java设计模式-工厂模式(springweb为例子)

    一般而言,工厂模式分为3种,简单工厂模式,工厂方法模式,抽象工厂模式.这三种工厂模式逐层深入吧. 一,从springWeb.jar包使用抽象工厂模式的一个例子聊起 之前对spring各种痴迷,所以在需 ...

  9. Java设计模式の工厂模式

    -------------------------------------------------------- 目录:  一.序言 二.简单工厂模式 三.工厂方法模式 四.简单工厂和工厂方法模式的比 ...

  10. java设计模式--工厂模式

       所谓工厂,就是要造产品,比如一个小型砖瓦厂,只有一个窑,既能造砖又能造瓦,这种叫简单工厂模式.规模稍大一点呢,我多个窑,有的窑专门造砖,有的窑专门造瓦,想造别的,比如瓷砖,我再用个专门的窑,这种 ...

随机推荐

  1. C#Equal的使用

    代码如下: public partial class FramMain : Form { public FramMain() { InitializeComponent(); } private vo ...

  2. 《第一行代码》学习笔记17-碎片Fragment(2)

    1.碎片的状态和回调: (1)运行状态:碎片可见+所关联的活动处于运行状态. (2)暂停状态:当活动进入暂停状态(由于另一个未占满屏幕的活动被添加到栈顶),与其相关联的可见碎片会进入暂停状态. (3) ...

  3. ios开发必备第三方库

    引言 作为iOS开发人员,在开发App的过程中怎么会不使用第三方库呢?相信没有App是不使用第三方库的! 网络库 网络库,这是开发必备,除非你的App玩单机.现在特别火也特别好用的网络库就数AFNet ...

  4. CC3的多列属性Multi-column

    CC3的多列属性Multi-column 一直都很想了解这个属性,总是忘了.今天可以研究一下,回想起想了解它的原因,大概是觉得它很容易分开几列.可能会有很多好处和方便. 0 16-09-17 1 16 ...

  5. 移动web开发中遇到的一些问题收纳

    1.获取滚动条的值: window.scrollY window.scrollX 桌面浏览器中想要获取滚动条的值是通过document.scrollTop和document.scrollLeft得到的 ...

  6. javascript数组方法鉴赏一

    创建数组 如果你习惯了用 new 来实例化对象的形式,那么在js中一定会疑惑,可选的参数数量代表的意义截然不同. new Array(size);//传一个参数的时候分两种情况,size是正整数时代表 ...

  7. [FML]学习笔记二 PAC Learning Model

    对于一个concept class C,如果存在一个算法A和一个多项式poly(.,.,.,.),有对于任意的ε>0.δ>0以及X的任意分布D和任何target concept C,当sa ...

  8. 使用 OpenWrt Image Generator 为 WR703N 路由器定制固件

    标题:使用 OpenWrt Image Generator 为 WR703N 路由器定制固件 之前试着自己编译固件,编译是成功了,但是在后期安装官方仓库的ipk时出现问题,因为自己编译的固件和官方固件 ...

  9. IOS 项目问题总结

    把自己项目中遇到的问题总结一下,供大家参考,希望大家多多提出意见!! 在Xcode 6.2中遇到Your build settings specify a provisioning profile w ...

  10. iOS高仿城觅-感谢大神分享

    项目展示,由于没有数据,所以所有的cell显示的都是我自己写的数据 抽屉 首页部分效果 首页效果 部分效果 发现 消息 搜索 设置 模糊效果 代码注释展示 代码注释展示 还有很多细节就不一一展示了,大 ...