JAVA设计模式-工厂模式(代码示例)
结构

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设计模式-工厂模式(代码示例)的更多相关文章
- 【设计模式】Java设计模式 -工厂模式
[设计模式]Java设计模式 -工厂模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 目 ...
- 学习:java设计模式—工厂模式
一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类: 1)简单工厂模式(Simple Facto ...
- 一张图搞定Java设计模式——工厂模式! 就问你要不要学!
小编今天分享的内容是Java设计模式之工厂模式. 收藏之前,务必点个赞,这对小编能否在头条继续给大家分享Java的知识很重要,谢谢!文末有投票,你想了解Java的哪一部分内容,请反馈给我. 获取学习资 ...
- java设计模式—工厂模式
一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...
- Java设计模式——工厂模式
一.工厂模式分类 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类: (1)简单工厂模式(Simp ...
- 10.Java设计模式 工厂模式,单例模式
Java 之工厂方法和抽象工厂模式 1. 概念 工厂方法:一抽象产品类派生出多个具体产品类:一抽象工厂类派生出多个具体工厂类:每个具体工厂类只能创建一个具体产品类的实例. 即定义一个创建对象的接口(即 ...
- Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...
- java设计模式-工厂模式(springweb为例子)
一般而言,工厂模式分为3种,简单工厂模式,工厂方法模式,抽象工厂模式.这三种工厂模式逐层深入吧. 一,从springWeb.jar包使用抽象工厂模式的一个例子聊起 之前对spring各种痴迷,所以在需 ...
- Java设计模式の工厂模式
-------------------------------------------------------- 目录: 一.序言 二.简单工厂模式 三.工厂方法模式 四.简单工厂和工厂方法模式的比 ...
- java设计模式--工厂模式
所谓工厂,就是要造产品,比如一个小型砖瓦厂,只有一个窑,既能造砖又能造瓦,这种叫简单工厂模式.规模稍大一点呢,我多个窑,有的窑专门造砖,有的窑专门造瓦,想造别的,比如瓷砖,我再用个专门的窑,这种 ...
随机推荐
- Controller返回值类型ActionResult
在mvc中所有的controller类都必须使用"Controller"后缀来命名 并且对Action也有一定的要求: 必须是一个public方法 必须是实例方法 没有标志NonA ...
- asp.net读取文件
context.Response.ContentType = "text/html"; string fullpath = context.Server.MapPath(" ...
- linus用的是哪个桌面?
- 二维码生成 - QrCodeNet
下载QrCodeNet /// <summary> /// 生成QR码 /// </summary> /// <param name="output_path& ...
- hdu 5586 sum
Problem Description There is a number sequence A1,A2....An,you can select a interval [l,r] or not,al ...
- Map基本用法
Map的基本用法 map内部使用的是红黑树,在map内部所有的数据都是有序的 map插入有三种方法: insert(pair<int,string>(i,str)); myMap.inse ...
- CentoS7装机
按delete进入BIOS 选择UEFI 网上关于CentOS 7 的安装教程挺多的,但在前期的引导配置上很多都没有写清楚,让人很郁闷,以致于昨天安装的时候总是到不了安装界面.经过一番胡乱倒腾,终于找 ...
- stm32的FSMC
之前用的stm32f103rbt6,它是100引脚以内的,不带FSMC.驱动液晶屏或者SRAM要自己写时序方面的程序,比较麻烦.后来换成stm32f103zet6,带有FSMC.不过在学习FSMC的时 ...
- angular中设置$http的post请求的数据传递格式
ArgularJS的$http方法支持全局设置: $http.defaults.headers.post["Content-Type"] = "application/x ...
- Resharper上手指南
原文http://www.cnblogs.com/renji/archive/2007/12/11/resharper.html Resharper上手指南 我是visual studio的忠实用户, ...