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 [email protected] * 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 [email protected] * 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 [email protected] * 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 [email protected] * 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
总结一句话:未完成一个总事情,需要多个功能模块共同完成