• 大话设计模式之简单工厂模式


    简单工厂模式

      最近朋友推荐了一本书《大话设计模式》,此书刚刚到,博主也还没开始看,希望以博文的方式与大家一起分享,一起学习.

    简单工厂模式,也就是说,到底要实列化谁,将来会不会增加实列化的对象,比如增加开根运算,这是很容易实列化的地方应该考虑用一个单独的类来做这个创造实列的过程,这就是工厂,来我们一起看看这个类如何写。

    简单运算工厂类:

    import public
    
    public class OperationFactory
    {
    	public static OperationFactory(string operate)
    	{
    		Operation oper = null;
    		switch (operate)
    		{
    			case "+";
    				oper = new OperationFactory();
    				break;
    			case "-";
    				oper = new OperationFactory();
    				break;
    			case "*";
    				oper = new OperationFactory();
    				break;
    			case "/";
    				oper = new OperationFactory();
    				break;
    		}
    		return oper;
    	}
    }
    

      看到了吧,这样子只需要输入运算符号,工厂就实列出合适的对象,通过多态,返回父类的方式实现了计算器的结果。

    客户端代码:

    #客户端代码
    
    
    Operation oper;
    oper = OperationFactory.createOperate("+");
    oper.NumberA = 1;
    oper.NumberB = 2;
    double result = oper.GetResult();
    

      界面实现就是这样的代码、不管你是控制台程序,Windows 程序, Web 程序, PDA或手机程序,都可以用这段代码来实现计算器的功能,如果有一天我们需要更改加法运算,我们只需要改 (OperationADD)就可以了,那么我们需要增加各种复杂运算,比如平方根,立方根,自然对数,正弦余弦等,那么如何做呢?(只要增加相应的运算子类就可以了),增加之后,还得需要去修改一下运算类工厂,在switch中增加分支。

      写到这,不知不觉到结尾了,这就是简单的工厂模式,以下是几个类的结构图.

    模式还有很多......待更新

  • 相关阅读:
    BZOJ2219数论之神——BSGS+中国剩余定理+原根与指标+欧拉定理+exgcd
    Luogu 3690 Link Cut Tree
    CF1009F Dominant Indices
    CF600E Lomsat gelral
    bzoj 4303 数列
    CF1114F Please, another Queries on Array?
    CF1114B Yet Another Array Partitioning Task
    bzoj 1858 序列操作
    bzoj 4852 炸弹攻击
    bzoj 3564 信号增幅仪
  • 原文地址:https://www.cnblogs.com/wuyongcong/p/5838423.html
Copyright © 2020-2023  润新知