如果现在要加入一个 求M的N次方的计算方法,在简单工厂里,要先加这个功能类,然后去更改工厂方法,当中加 case 语句来做判断,现在用工厂方法,加功能类没问题,还要加相关的工厂类,在去改客户端。 看起来没有简化难度,反而增加了很多类和方法。
为什么:简单工厂模式的最大优点在于工厂类汇总包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
每次添加减少算法时都需要去更改原有的类。 违反了开放封闭原则。
算法上面一个父类,工厂上面一个父类,使用时 根据不同的算法 选择不同的工厂创建对象。
1 using UnityEngine; 2 using System.Collections; 3 4 public class FactoryStudy : MonoBehaviour { 5 6 // Use this for initialization 7 void Start () { 8 IFactory operation = new AddFactory(); 9 Opreation oper = operation.CreatFactory(); 10 oper.NumA = 1; 11 oper.NumB = 3; 12 float result= oper.GetResult(); 13 } 14 } 15 //计算 父类 16 public abstract class Opreation 17 { 18 public float NumA ; 19 public float NumB ; 20 21 public abstract float GetResult(); 22 } 23 //加法 24 public class AddOprertaion : Opreation 25 { 26 public override float GetResult() 27 { 28 return NumA + NumB; 29 } 30 } 31 32 //减法 33 public class SubOprertaion : Opreation 34 { 35 public override float GetResult() 36 { 37 return NumA - NumB; 38 } 39 } 40 //工厂 父类 41 public interface IFactory 42 { 43 Opreation CreatFactory(); 44 } 45 //加法工厂 46 public class AddFactory : IFactory 47 { 48 public Opreation CreatFactory() 49 { 50 return new AddOprertaion(); 51 } 52 } 53 //减法工厂 54 public class SubFactory : IFactory 55 { 56 public Opreation CreatFactory() 57 { 58 return new SubOprertaion(); 59 } 60 }
当需要改动时,客户端的改动特别小。
浙公网安备 33010602011771号