您的位置:首页 > 其它

设计模式(2)工厂模式、工厂方法模式、抽象工厂模式

2017-07-11 13:49 330 查看
工厂模式

一个工厂可以生产不同型号的产品,客户需告诉工厂需要什么型号的产品



代码:

public abstract BaseOperate
{
public double NumberA{get;set;}
public double NumberB{get;set;}
public abstract double GetResult();
}

public class AddOperate:BaseOperate
{
public override double GetResult()
{
return NumberA+NumberB;
}
}

public class MinusOperate:BaseOperate
{
public override double GetResult()
{
return NumberA-NumberB;
}
}

......

public class OperateFactory
{
public BaseOperate CreateOperation(string operateName)
{
switch(operateName)
{
case "Add":return new AddOperate();
case "Minus":return new MinusOperate();

......

}
}
}


简单工厂违背了开放封闭原则,在新增功能时,需要修改工厂,这样不是一个好事情。工厂方法模式解决了这个问题。

工厂方法模式

有多个工厂,每个工厂生产一种型号的产品,客户需到不同工厂



方法类与上面一致,将原有的一个工厂拆分成多个工厂,有多少个产品就有多少个工厂

代码:

public Interface IFactory
{
BaseOperate CreateOperation();
}

public AddFactory:IFactory
{
public BaseOperate CreateOperation()
{
return new AddOperate();
}
}

public MinusFactory:IFactory
{
public BaseOperate CreateOperation()
{
return new MinusOperate();
}
}

......

static void main(string[] agrs)
{
IFactory factory=new AddFactory();
BaseOperate opt =factory.CreateOperation();
opt.GetResult();
}


在工厂方法中出现一个问题,一个工厂只能生产一个产品,但是我们经常是要在一个工厂生产一个产品的不同型号产品。接下来通过抽象工厂模式来解决这个问题。

抽象工厂模式

有多个工厂,每个工厂生产一种产品的多种型号的多个产品



代码:

public  IUser
{

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式
相关文章推荐