设计模式——Simple Factory模式

来源:互联网 发布:时时彩杀号软件苹果 编辑:程序博客网 时间:2024/05/22 06:31

Factory模式个人理解:

适用情景:某些类具有共同的方法、属性,可继承同一抽象父类或者实现同一接口的情况下,新建这些类的时候使用。如下实例:不同的类具有相同方法,但方法有不同的实现,抽象继承与abstract类 OilOrderState,工厂类有静态方法create,根据传参不同创建不同的实体实现类。

实例代码:

产品抽象类:

abstract class OilOrderState {    OilOrderV230 host;    public OilOrderState(OilOrderV230 host) {        this.host = host;    }    abstract String getStateTitleString();    abstract String getPayPrice();    abstract OilOrderOptionButtonConfig[] getOilOrderOptionButtonConfig(OilOrderV230 oilOrderV230,OilOrderPresenterV230 oilOrderPresenterV230);}

产品实现类:

    产品实现类OilOrderStateUnpaid:

public class OilOrderStateUnpaid extends OilOrderState{    public OilOrderStateUnpaid(OilOrderV230 host) {        super(host);    }    @Override    String getStateTitleString() {        return "待支付";    }    @Override    String getPayPrice() {        return "应付" + host.getPayPrice() + "元";    }    @Override    OilOrderOptionButtonConfig[] getOilOrderOptionButtonConfig(OilOrderV230 oilOrderV230, OilOrderPresenterV230 oilOrderPresenterV230) {        OilOrderOptionButtonConfig [] oilOrderOptionButtonConfigs = new OilOrderOptionButtonConfig[2];        oilOrderOptionButtonConfigs[0] = OilOrderOptionButtonConfig.createCancelButton(oilOrderV230,oilOrderPresenterV230);        oilOrderOptionButtonConfigs[1] = OilOrderOptionButtonConfig.createPayButton(oilOrderV230,oilOrderPresenterV230);        return oilOrderOptionButtonConfigs;    }}


Factory类:

class OilOrderStateFactory {    public static final int OIL_ORDER_FILTER_UNPAID = 0;    public static final int OIL_ORDER_FILTER_PAID = 1;    public static final int OIL_ORDER_FILTER_CANCELED = 2;    public static OilOrderState create(int state,OilOrderV230 host) {        switch (state) {            case OIL_ORDER_FILTER_UNPAID:                return new OilOrderStateUnpaid(host);            case OIL_ORDER_FILTER_PAID:                return new OilOrderStatePaid(host);            case OIL_ORDER_FILTER_CANCELED:                return new OilOrderStateCanceled(host);        }        throw new IllegalArgumentException("未知订单类型");    }}

阅读全文
0 0
原创粉丝点击