Java 抽象模式设计

抽象工厂模式


提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.

基本的模型如下


具体的实现如下:

做一个产品由三类人完成,但是三类人又有高级和初级的分别,将高级别的组织在一起,低级别的组织在一起.

代码实现如下:

三类人:抽象概念:

package org.durian.durianabstractdesignmode.atom;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:33
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public interface IDesigner {

    void design();

}
package org.durian.durianabstractdesignmode.atom;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:33
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public interface IDevloper {

    void develop();

}


package org.durian.durianabstractdesignmode.atom;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:33
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public interface IProductor {

    void product();

}


三类人分别有高级低级区分,这个是具体的:

package org.durian.durianabstractdesignmode.worker;

import org.durian.durianabstractdesignmode.atom.IDesigner;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:44
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public class AdvanceDesigner implements IDesigner {
    @Override
    public void design() {
        System.out.println("I do advance design work only !");
    }
}
package org.durian.durianabstractdesignmode.worker;

import org.durian.durianabstractdesignmode.atom.IDevloper;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:44
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public class AdvanceDeveloper implements IDevloper {
    @Override
    public void develop() {
        System.out.println("I do advance develop work only !");
    }
}


package org.durian.durianabstractdesignmode.worker;

import org.durian.durianabstractdesignmode.atom.IProductor;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:45
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public class AdvanceProductor implements IProductor {
    @Override
    public void product() {
        System.out.println("I do advance product work only !");
    }
}


package org.durian.durianabstractdesignmode.worker;

import org.durian.durianabstractdesignmode.atom.IDesigner;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:45
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public class BasicDesigner implements IDesigner {
    @Override
    public void design() {
        System.out.println("I do basic design work , as I'm a learner !");
    }
}


package org.durian.durianabstractdesignmode.worker;

import org.durian.durianabstractdesignmode.atom.IDevloper;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:46
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public class BasicDeveloper implements IDevloper {
    @Override
    public void develop() {
        System.out.println("I do basic develop work , as I'm a learner !");
    }
}


package org.durian.durianabstractdesignmode.worker;

import org.durian.durianabstractdesignmode.atom.IProductor;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:46
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public class BasicProductor implements IProductor {
    @Override
    public void product() {
        System.out.println("I do basic product work , as I'm a learner !");
    }
}


然后组织成两个不同级别的大团体:

package org.durian.durianabstractdesignmode.factory;

import org.durian.durianabstractdesignmode.atom.IDesigner;
import org.durian.durianabstractdesignmode.atom.IDevloper;
import org.durian.durianabstractdesignmode.atom.IProductor;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:31
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public interface IWorkerFactory {

    IProductor createProductor();
    IDesigner createDesigner();
    IDevloper createDeveloper();

}


提供给项目使用的具体实现如下:

package org.durian.durianabstractdesignmode.factory;

import org.durian.durianabstractdesignmode.atom.IDesigner;
import org.durian.durianabstractdesignmode.atom.IDevloper;
import org.durian.durianabstractdesignmode.atom.IProductor;
import org.durian.durianabstractdesignmode.worker.AdvanceDesigner;
import org.durian.durianabstractdesignmode.worker.AdvanceDeveloper;
import org.durian.durianabstractdesignmode.worker.AdvanceProductor;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:47
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public class AdvanceWorkerFactory implements IWorkerFactory {
    @Override
    public IProductor createProductor() {
        return new AdvanceProductor();
    }

    @Override
    public IDesigner createDesigner() {
        return new AdvanceDesigner();
    }

    @Override
    public IDevloper createDeveloper() {
        return new AdvanceDeveloper();
    }
}


package org.durian.durianabstractdesignmode.factory;

import org.durian.durianabstractdesignmode.atom.IDesigner;
import org.durian.durianabstractdesignmode.atom.IDevloper;
import org.durian.durianabstractdesignmode.atom.IProductor;
import org.durian.durianabstractdesignmode.worker.BasicDesigner;
import org.durian.durianabstractdesignmode.worker.BasicDeveloper;
import org.durian.durianabstractdesignmode.worker.BasicProductor;

/**
 * Project name : DurianAbstractDesignMode
 * Created by zhibao.liu on 2016/2/2.
 * Time : 18:48
 * Email warden_sprite@foxmail.com
 * Action : durian
 */
public class BasicWorkerFactory implements IWorkerFactory {
    @Override
    public IProductor createProductor() {
        return new BasicProductor();
    }

    @Override
    public IDesigner createDesigner() {
        return new BasicDesigner();
    }

    @Override
    public IDevloper createDeveloper() {
        return new BasicDeveloper();
    }
}


使用:

package org.durian.durianabstractdesignmode;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

import org.durian.durianabstractdesignmode.atom.IDesigner;
import org.durian.durianabstractdesignmode.atom.IDevloper;
import org.durian.durianabstractdesignmode.atom.IProductor;
import org.durian.durianabstractdesignmode.factory.AdvanceWorkerFactory;
import org.durian.durianabstractdesignmode.factory.BasicWorkerFactory;

public class MainActivity extends ActionBarActivity {

    private AdvanceWorkerFactory advance;
    private BasicWorkerFactory basic;

    private Button advanceButton;
    private Button basicButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        advance=new AdvanceWorkerFactory();
        basic=new BasicWorkerFactory();

        basicButton=(Button)findViewById(R.id.basic);
        basicButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                IDesigner iDesigner=basic.createDesigner();
                iDesigner.design();

                IDevloper iDevloper=basic.createDeveloper();
                iDevloper.develop();

                IProductor iProductor=basic.createProductor();
                iProductor.product();

            }
        });


        advanceButton=(Button)findViewById(R.id.advance);
        advanceButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                IDesigner iDesigner=advance.createDesigner();
                iDesigner.design();

                IDevloper iDevloper=advance.createDeveloper();
                iDevloper.develop();

                IProductor iProductor=advance.createProductor();
                iProductor.product();

            }
        });

    }

}

运行结果:































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值