简单工厂模式的实现

来源:互联网 发布:mac转换视频格式软件 编辑:程序博客网 时间:2024/04/30 01:55
该代码实现了四则运算,用简单工厂模式开发.
  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 = "";
            Operation oper 
= OperationFactory.createOpertion(B);
            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 class OperationFactory 
    
{
        
public static Operation createOpertion(string operte)
        
{
            Operation Oper
=null;
            
switch (operte)
            
{
                
case "+":
                    
{
                        Oper 
= new OperationAdd();
                        
break;
                    }

                
case "-":
                    
{
                        Oper 
= new OperationSub();
                        
break;
                    }

                
case "*":
                    
{
                        Oper 
= new OperationNul();
                        
break;
                    }

                
case "/":
                    
{
                        Oper 
= new OperationDiv();
                        
break;
                    }

            }

                    
return Oper;
        }
 
    }
原创粉丝点击