Java的设计模式注重是的开发过程的思维方式,工作流程方式,在于改变开发者的思维方式,而不在于写多少demo,测试程序基本上是感受不到设计模式的思维的,因为一般小demo的工作量有限,不需要扩展,也不需要以后维护,更加不需要因为某个人离职而导致code"散落一地".
当然各种模式设计各个开发者的理解可能多多少少有偏差,但是基本思想是一样的.
工厂模式:其实很多文献说的术语,我也看得一头雾水,似懂非懂.可以举一个通俗的比方 : Boss要生成一台手机,那么就提出工作要求,那么意味着工作这个思想是提出来了,但是具体内容没有(IWork接口就产生了),秘书就说,开发这个需要项目管理,产品经理,交互,视觉,程序开发都要参与,工种就产生了,这样就需要这些人付出他们的工作内容就产生了,但是并没有分配到具体人,然后要分配到各自的成员,只需要打包分配给它们:
根据上面的思维构想,产品就去做产品的事情,开发就去做开发的事情,因为他们的事情已经各自分配好了,只需要开发在调用过程中告诉各自的对象.
开发一个程序测试一下:
<1> : 工程目录:
<2> : 具体程序:
IWork.java:
package org.durian.durianfactorydesignmode.factory.work.iwork;
/**
* Project name : DurianFactoryDesignMode
* Created by zhibao.liu on 2016/1/27.
* Time : 19:51
* Email warden_sprite@foxmail.com
* Action : durian
*/
public interface IWork {
public void Work();
}
DevelopWork.java:
package org.durian.durianfactorydesignmode.factory.work;
import org.durian.durianfactorydesignmode.factory.work.iwork.IWork;
/**
* Project name : DurianFactoryDesignMode
* Created by zhibao.liu on 2016/1/27.
* Time : 19:58
* Email warden_sprite@foxmail.com
* Action : durian
*/
public class DevelopWork implements IWork {
@Override
public void Work() {
System.out.println("do develop work !");
}
}
下面是打包,约定各自的工作内容:
IWorkFactory.java
package org.durian.durianfactorydesignmode.factory;
import org.durian.durianfactorydesignmode.factory.work.iwork.IWork;
/**
* Project name : DurianFactoryDesignMode
* Created by zhibao.liu on 2016/1/28.
* Time : 9:45
* Email warden_sprite@foxmail.com
* Action : durian
*/
public interface IWorkFactory {
IWork getWork();
}
DevelopWorkFactory.java
package org.durian.durianfactorydesignmode.factory;
import org.durian.durianfactorydesignmode.factory.work.DevelopWork;
import org.durian.durianfactorydesignmode.factory.IWorkFactory;
import org.durian.durianfactorydesignmode.factory.work.iwork.IWork;
/**
* Project name : DurianFactoryDesignMode
* Created by zhibao.liu on 2016/1/28.
* Time : 9:47
* Email warden_sprite@foxmail.com
* Action : durian
*/
public class DevelopWorkFactory implements IWorkFactory {
@Override
public IWork getWork() {
return new DevelopWork();
}
}
在程序开发中,就相当于封装好特定功能块了,需要做开发工作的时候,就调用它就可以了,下面是具体使用,让事情做起来:
package org.durian.durianfactorydesignmode;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import org.durian.durianfactorydesignmode.factory.DesignWorkFactory;
import org.durian.durianfactorydesignmode.factory.DevelopWorkFactory;
import org.durian.durianfactorydesignmode.factory.InteractionWorkFactory;
import org.durian.durianfactorydesignmode.factory.PMWorkFactory;
import org.durian.durianfactorydesignmode.factory.ProductWorkFactory;
public class DurianMainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.durian_main);
for (int i=0;i<5;i++){
whatDoIDo(i);
}
}
private void whatDoIDo(int i){
switch (i){
case 0:
DesignWorkFactory dodesign=new DesignWorkFactory();
dodesign.getWork().Work();
break;
case 1:
DevelopWorkFactory dodevelop=new DevelopWorkFactory();
dodevelop.getWork().Work();
break;
case 2:
InteractionWorkFactory dointeraction=new InteractionWorkFactory();
dointeraction.getWork().Work();
break;
case 3:
PMWorkFactory dopm=new PMWorkFactory();
dopm.getWork().Work();
break;
case 4:
ProductWorkFactory doproduct=new ProductWorkFactory();
doproduct.getWork().Work();
default:
break;
}
}
}
运行结果:
上面的程序只给出了部分,其余的可以参考:http://pan.baidu.com/s/1pKuyDgJ
总结一句话:未完成一个总事情,需要多个功能模块共同完成