简单工厂模式
2017-09-18 16:19
232 查看
简单工厂模式 (Simple Factory) 又叫静态工厂方法(Static Factory Method)模式。
简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例。
简单工厂模式是一种对象创建型模式 (可参考
设计模式 创建型模式)。但是简单工厂模式不属于23种Gof设计模式之一。
说白了简单工厂就是创建一个单独类来创造实例的过程,这就是工厂;
已最常见的实现一个计算器为例子
code:
优点:
简单工厂模式的工厂类是整个模式的关键。其中包含了必要的逻辑判断,根据外部信息,决定究竟应该创建哪个具体类的对象。
通过使用简单工厂模式,用户无需了解对象如何创建的,只要传入必要信息就可以了。实现了创建与调用的分离。降低了客户端的代码难度。
缺点:
如果增加和减少子类,需要修改工厂类,这违背了开闭原则
如果子类过多,会使得工厂类过于繁杂,这违背了高内聚原则,不利于后期的维护
简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例。
简单工厂模式是一种对象创建型模式 (可参考
设计模式 创建型模式)。但是简单工厂模式不属于23种Gof设计模式之一。
说白了简单工厂就是创建一个单独类来创造实例的过程,这就是工厂;
已最常见的实现一个计算器为例子
code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _20170918 { public class Operation { protected double _numberA = 0; protected double _numberB = 0; public double NumberA { get { return _numberA; } set { _numberA = value; } } public double NumberB { get { return _numberB;} set { _numberB = value; } } public virtual double GetResult() { double result = 0; return result; } } class OperationAdd : Operation { public override double GetResult() { double result = 0; return result = _numberA + _numberB; } } class OperationSub : Operation { public override double GetResult() { double result; return result = _numberA - _numberB; } } class OperationMul :Operation { public override double GetResult() { double result; return result = _numberA * _numberB; } } class OperationDiv : Operation { public override double GetResult() { double result; if (_numberB != 0) return result = _numberA / _numberB; else throw new Exception("除数不能为0"); } } public class OperationFactory //核心类,通过这个类来创建实例 { public static Operation createOperation(string operate) { Operation oper = null; switch (operate) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": oper = new OperationMul(); break; case "/": oper = new OperationDiv(); break; } return oper; } } class Program { static void Main(string[] args) { Operation oper; oper = OperationFactory.createOperation("+"); oper.NumberA = 1; oper.NumberB = 2; double result; result = oper.GetResult(); Console.WriteLine(result); Console.ReadKey(); } } }
优点:
简单工厂模式的工厂类是整个模式的关键。其中包含了必要的逻辑判断,根据外部信息,决定究竟应该创建哪个具体类的对象。
通过使用简单工厂模式,用户无需了解对象如何创建的,只要传入必要信息就可以了。实现了创建与调用的分离。降低了客户端的代码难度。
缺点:
如果增加和减少子类,需要修改工厂类,这违背了开闭原则
如果子类过多,会使得工厂类过于繁杂,这违背了高内聚原则,不利于后期的维护
相关文章推荐
- 简单工厂模式
- Java 设计模式中,简单工厂、工厂方法、抽象工厂的区别
- 反射 内省 JaveBean 与 简单工厂设计模式 .
- 解析XML,将数据显示在treeview上,使用简单工厂模式
- 设计模式:简单工厂与策略模式
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- Java设计模式学习1—简单工厂模式
- 设计模式学习笔记(二)--简单工厂模式
- 设计模式你怎么看?--简单工厂模式
- 简单工厂模式
- 设计模式之 : 简单工厂模式
- Java设计模式之简单工厂模式
- 简单工厂设计模式(OperationFactory)
- python 简单工厂模式
- 设计模式一 简单工厂
- 简单工厂模式--加减乘除运算
- iOS设计模式之简单工厂模式
- 简单工厂 模式
- 设计模式之简单工厂C++实现
- 简单工厂模式