设计模式——工厂模式

来源:互联网 发布:h5 刮刮卡 源码 编辑:程序博客网 时间:2024/06/05 00:10

工厂模式根据业务场景的不同, 有三种不同的实现方式,分别是简单工厂模式、工厂模式、抽象工厂模式。

简单工厂模式

class simpleFactory{    int prodNo;    public simpleFactory(int proN){        this.prodNo= prodNo;    }    public IProduction GetProduction(){        switch(prodNo){            case 1:                return new ProductionA();            case 2:                return new ProductionB();            default:                return new ProductionC();        }    }}interface IProduction{}class ProductionA implements IProduction{}class ProductionB implements IProduction{}class ProductionC implements IProduction{}

简单工厂通过构造时传入的标识来生产产品,不同产品都在同一个工厂中生产,这种判断会随着产品的增加而增加,给扩展和维护带来麻烦。

工厂模式

Interface IFactory(){    IProduction getProduction();}class FactoryA implements IFactory{    IProduction productionA;    public FactoryA(){        this.productionA = new ProductionA();    }    public IProduction getProduction(){        return this.productionA;    }   }class FactoryB implements IFactory{    IProduction productionB;    public FactoryB{        this.productionB = new ProductionB();    }    public IProduction getProduction(){        return this.productionB;    }}interface IProduction{}class ProductionA implements IProduction(){}class ProductionB implements IProduction(){}

工厂模式中,一个工厂生产一个产品,所有产品派生于同一个抽象产品(或产品接口),但工厂模式无法解决产品族和产品等级结构的问题

抽象工厂模式

interface IFactory{    IFridge CreateFridge();    IAirCondition CreateAirCondition();}class SamsungFactory implements IFactory{    public IAirCondition CreateAirCondition(){        return new SamsungAirCondition();    }    public IFridge CreateFridge(){        return new SamsungFridge();    }}class GreeFactry implements IFactory{    public IAirCondition CreateAirCondition(){        return new GreeAirCondition();     }    public IFridge CreateFridge(){        return new GreeFridge();    }}public interface IFridge{}public interface IAirCondition{}public class SamsungFridge implments IFridge{}public class GreeFridge implements IFridge{}public class SamsungAirCondition implements IAirConditio{}public class GreeAirCondition implements IAirConditi{}

抽象工厂模式中,一个工厂生产多个产品,它们是一个产品族,不同的产品族的产品派生于不同的抽象产品。

0 0
原创粉丝点击