Unity3D 设计模式---工厂模式
来源:互联网 发布:淘宝大马士革刀真假 编辑:程序博客网 时间:2024/06/06 01:53
1.工厂模式的定义
工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就可以考虑是否需要使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
2.工厂模式的原理
3.举例 实现 简单的计算 每次返回结果
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net;using System.Net.Sockets;namespace Test{ //运算类 public class Operation { private double _numberA = 0; private 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; result = NumberA + NumberB; return result; } } //减法 class OperationSub : Operation { public override double GetResult() { double result = 0; result = NumberA - NumberB; return result; } } //乘法 class OperationMul : Operation { public override double GetResult() { double result = 0; result = NumberA * NumberB; return result; } } //除法 class OperationDiv : Operation { public override double GetResult() { double result = 0; if (NumberB == 0) throw new Exception("除数不能为0"); result = NumberA / NumberB; return result; } } //简单工厂 public class OperationFactory { public static Operation createOperate(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; } } public class Program { static void Main(string[] args) { Console.Write("请选择运算符号(+ 、- 、*、/、):"); string strOperate = Console.ReadLine(); Operation oper; oper = OperationFactory.createOperate(strOperate); Console.Write("请输入数字A:"); oper.NumberA = Convert.ToDouble(Console.ReadLine()); Console.Write("请输入数字B:"); oper.NumberB = Convert.ToDouble(Console.ReadLine()); double result = oper.GetResult(); Console.WriteLine("结果是:" + result); Console.ReadLine(); } }}
4.优点
符合开放封闭原则,因为增加新的产品不需要修改原来已有的工厂类,只需要增加相应的工厂即可。
将使用和创建的责任分开。
符合设计的先抽象后具体的顺序。
5.缺点
如果产品类太多会导致增加很多的类,会使系统显得很不简洁。
如果将选择逻辑交给用户,则在一定程度上增加了用户对细节的依赖。
与简单工厂模式相比,增加了工厂本身的创建开销。
用户需要创建工厂类本身.(通过一定的方法可以将工厂类的创建委托给抽象类去完成)。
阅读全文
1 0
- Unity3D 设计模式---工厂模式
- 设计模式--工厂方法模式在unity3d里面的使用
- 设计模式--简单工厂模式在unity3d里面的使用
- Unity3d与设计模式(三)工厂模式
- Unity3d之设计模式(二)工厂模式
- Unity3D设计模式之工厂模式(4)
- 设计模式------工厂模式
- 设计模式------工厂模式
- 设计模式 [ 工厂模式 ]
- 设计模式--工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- 设计模式 工厂模式
- 设计模式-工厂模式
- 设计模式 -- 工厂模式
- 设计模式-工厂模式
- 设计模式----工厂模式
- 设计模式---工厂模式
- 【LAYABOX】轴心点的解释说明
- Spark源码分析之job提交后转换为Stage
- 那些年你用过的工具--网络工具Wireshark经验谈
- MFC中,在图片上添加汉字(c++实现)
- 关于停车计费系统的几个问题
- Unity3D 设计模式---工厂模式
- hdu6103 Krinriki(尺取法)
- Tensorflow实战之用softmax Regression识别手写数字
- 关于全栈
- android APK更新原理以及代码实现
- (十五)RpcContext对象
- Repair the Wall
- markdown help
- POJ-2342 Anniversary party(没有上司的晚会) 树状动归