Java 工厂模式设计

来源:互联网 发布:linux 标准输出重定向 编辑:程序博客网 时间:2024/06/05 19:34

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

总结一句话:未完成一个总事情,需要多个功能模块共同完成






















0 0
原创粉丝点击