Java 工厂模式设计

Java的设计模式注重是的开发过程的思维方式,工作流程方式,在于改变开发者的思维方式,而不在于写多少demo,测试程序基本上是感受不到设计模式的思维的,因为一般小demo的工作量有限,不需要扩展,也不需要以后维护,更加不需要因为某个人离职而导致code"散落一地".

当然各种模式设计各个开发者的理解可能多多少少有偏差,但是基本思想是一样的.

工厂模式:其实很多文献说的术语,我也看得一头雾水,似懂非懂.可以举一个通俗的比方 : Boss要生成一台手机,那么就提出工作要求,那么意味着工作这个思想是提出来了,但是具体内容没有(IWork接口就产生了),秘书就说,开发这个需要项目管理,产品经理,交互,视觉,程序开发都要参与,工种就产生了,这样就需要这些人付出他们的工作内容就产生了,但是并没有分配到具体人,然后要分配到各自的成员,只需要打包分配给它们:

Java 工厂模式设计_第1张图片

根据上面的思维构想,产品就去做产品的事情,开发就去做开发的事情,因为他们的事情已经各自分配好了,只需要开发在调用过程中告诉各自的对象.

开发一个程序测试一下:

<1> : 工程目录:

Java 工厂模式设计_第2张图片


<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

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























你可能感兴趣的:(Java 工厂模式设计)