工厂方法模式

     class  Program
    
{
        
static void Main(string[] args)
        
{
            Console.Write(
"请输入数字A:");
            
string A = Console.ReadLine();
            Console.Write(
"请选择运算符号(+、-、*、/):");
            
string B = Console.ReadLine();
            Console.Write(
"请输入数字B:");
            
string C = Console.ReadLine();
            
string D = "";
            OperationFactory OperF 
= new OperationFactoryAdd();
            Operation oper 
= OperF.createOpertion();
            oper.NumberA 
= int.Parse(A);
            oper.NumberB 
= int.Parse(C);
            D 
= oper.GetResult().ToString();
            Console.WriteLine(
"结果是:" + D);
        }

    }


  
public    class  Operation
{
    
private double _numberA = 0;
    
private double _numberB = 0;

    
/// <summary>
    
/// 数字A
    
/// </summary>

    public double NumberA
    
{
        
get return _numberA; }
        
set { _numberA = value; }
    }


    
/// <summary>
    
/// 数字B
    
/// </summary>

    public double NumberB
    
{
        
get return _numberB; }
        
set { _numberB = value; }
    }


    
/// <summary>
    
/// 得到运算结果
    
/// </summary>
    
/// <returns></returns>

    public virtual double GetResult()
    
{
        
double result = 0;
        
return result;
    }

    }


    
/// <summary>
    
/// 加法类
    
/// </summary>

     public   class  OperationAdd : Operation
    
{
        
public override double GetResult()
        
{
            
return this.NumberA + NumberB;
        }

    }


    
/// <summary>
    
/// 减法类
    
/// </summary>

     public   class  OperationSub : Operation
    
{
        
public override double GetResult()
        
{
            
return NumberA - NumberB;
        }

    }


    
/// <summary>
    
/// 乘法类
    
/// </summary>

     public   class  OperationNul : Operation 
    
{
        
public override double GetResult()
        
{
            
return NumberA * NumberB;
            
//return base.GetResult();
        }

    }


    
/// <summary>
    
/// 除法类
    
/// </summary>

     public   class  OperationDiv : Operation
    
{
        
public override double GetResult()
        
{
            
if (NumberB == 0
            
{
                
return 0;
            }

            
return NumberA / NumberB;
            
//return base.GetResult();
        }

    }


    
public   interface   OperationFactory 
    
{
          Operation createOpertion();
    }


    
public   class  OperationFactoryAdd : OperationFactory
    
{
        
public   Operation createOpertion() 
        
{
            
return new OperationAdd();
        }

    }


    
public   class  OperationFactorySub : OperationFactory 
    
{
        
public  Operation createOpertion()
        
{
            
return new OperationSub();
        }

    }


    
public   class  OperationFactoryNul : OperationFactory 
    
{
        
public  Operation createOpertion()
        
{
            
return new OperationDiv();
        }

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值