设计模式——工厂模式

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

简单工厂模式

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{}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值