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

xiaoxiao2021-02-28  117

工厂模式 一个工厂可以生产不同型号的产品,客户需告诉工厂需要什么型号的产品 代码: 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 { }
转载请注明原文地址: https://www.6miu.com/read-62435.html

最新回复(0)