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设计模式--工厂模式
所谓工厂,就是要造产品,比如一个小型砖瓦厂,只有一个窑,既能造砖又能造瓦,这种叫简单工厂模式.规模稍大一点呢,我多个窑,有的窑专门造砖,有的窑专门造瓦,想造别的,比如瓷砖,我再用个专门的窑,这种 ...
随机推荐
- [转]iOS hybrid App 的实现原理及性能监测
转自:http://www.cocoachina.com/ios/20151118/14270.html iOS hybrid App 的实现原理及性能监测 2015-11-18 11:39 编辑: ...
- unity碰撞组件、刚体组件
游戏导入标准资源包“Character Controllers”后可以为游戏对象添加 character(角色控制器)组件: 添加角色控制器组建以后可以控制游戏对象移动: 角色控制器组件因为与碰撞组件 ...
- Bootstrap 字形图标(Glyphicons)
http://w3c.3306.biz/bootstrap/eg/bootstrap--glyphicons-list.html
- java 操作POI参考文章
http://blog.csdn.net/softwave/article/details/38071825 http://www.cnblogs.com/ivan0626/archive/2013/ ...
- #能力开放平台系列-Fiddler访问Rest服务
问题 最近开发能力开放平台,需要将Dubbo服务转换成Rest服务,虽然转换很成功(后续文档会写出如何将Dubbo服务转换成Rest接口),但是调试起来特别的麻烦. 解决方案: Fiddler解决方案 ...
- MAC Intellij IDEA 常用快捷键
MAC Intellij IDEA 常用快捷键 Copy by: http://blog.csdn.net/cym492224103/article/details/40077253 Keymap 设 ...
- 移动WEB开发常用技巧
Meta设置 <!-- 设备宽度.禁止缩放 --> <meta name="viewport" content="width=device-width, ...
- Max Min
def main(): n = int(raw_input()) k = int(raw_input()) k_arr = [] min_dif = 9999999999 # 根据input要求,规定 ...
- Silverlight js html 相互调用
1.sl调用js 比如我们在页面中定义一个js函数: <script type="text/javascript"> function fnTest(ms ...
- 配置wamp环境使得在命令行下也能执行socket扩展
首先在apache中开启socket扩展 php环境安装目录\bin\apache\apache2.2.17\bin\php.ini 去掉前面的';' extension=php_sockets. ...