如果现在要加入一个 求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 }
View Code

 

当需要改动时,客户端的改动特别小。

posted on 2017-09-07 15:26  Mr.糖马儒  阅读(115)  评论(0)    收藏  举报