简单工厂模式
来源:互联网 发布:男友几把粗的体验知乎 编辑:程序博客网 时间:2024/06/14 10:59
简单工厂模式 (Simple Factory) 又叫静态工厂方法(Static Factory Method)模式。
简单工厂模式通常是定义一个工厂类,这个类可以根据不同变量返回不同类的产品实例。
简单工厂模式是一种对象创建型模式 (可参考 设计模式 创建型模式)。但是简单工厂模式不属于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(); } }}
优点:
简单工厂模式的工厂类是整个模式的关键。其中包含了必要的逻辑判断,根据外部信息,决定究竟应该创建哪个具体类的对象。
通过使用简单工厂模式,用户无需了解对象如何创建的,只要传入必要信息就可以了。实现了创建与调用的分离。降低了客户端的代码难度。
缺点:
如果增加和减少子类,需要修改工厂类,这违背了开闭原则
如果子类过多,会使得工厂类过于繁杂,这违背了高内聚原则,不利于后期的维护
阅读全文
0 0
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- kotlin 编译报Disable offline mode and sync project错误
- C++类中的this指针
- Linux+django 连接SqlServer的问题
- 木马病毒隐身穿墙术解密之花指令和终止进程
- 欢迎使用CSDN-markdown编辑器
- 简单工厂模式
- 软件工程网络课程作业二:命令行菜单小程序
- android 7.1 上wifi 热点 上的接口变化
- 解决Myeclipse破解run.bat无法运行!
- Java运算符_动力节点Java学院整理
- 构造.析构.深拷贝和浅拷贝
- forword与redirect的区别
- java中方法详解
- JavaScript基础之选择器