您的位置:首页 > 其它

设计模式——工厂模式

2017-01-08 20:20 453 查看
工厂模式根据业务场景的不同, 有三种不同的实现方式,分别是简单工厂模式、工厂模式、抽象工厂模式。

简单工厂模式

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


抽象工厂模式中,一个工厂生产多个产品,它们是一个产品族,不同的产品族的产品派生于不同的抽象产品。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息