Operation class
public class operation { private double A = 0; Private double b = 0; Public double A { get {return A;} set {a = value;} } Public double B { get {return B;} set {b = value;} } Public virtual Double GetResult () { Double rst = 0; return rst; } }
Subtraction class
public class Jia:operation {public override double GetResult () { double result = 0; result = A + B; return result; } } public class Jian:operation {public override double GetResult () { double result = 0; result = A-B; return result; } } public class Cheng:operation {public override double GetResult () { double result = 0; result = A * B; return result; } } public class Chu:operation {public override double GetResult () { double result = 0; if (b==0) throw new Exception ("divisor cannot be 0"); result = A/b; return result; } }
Factory class
public class Operationfactory {public static operation CreateOperation (string operation) { Operation result = NULL; Switch (operation) {case ' + ': result = new Jia (); Case "-": result = new Jian (); break; Case "*": result = new Cheng (); break; Case "/": result = new Chu (); break; Default: Break ; } return result; } }
Console requests
Console.Write ("Please enter the first number"); DoubleA =convert.todouble (Console.ReadLine ()); Console.Write ("Please enter a second number"); Doubleb =convert.todouble (Console.ReadLine ()); Console.Write ("Please enter operator"); stringOPR =Console.ReadLine (); Operation Opr2=operationfactory.createoperation (OPR); Opr2. A=A; Opr2. B=b; Doubleresult =OPR2. GetResult (); Console.WriteLine (result); Console.ReadLine ();
Simple Factory Mode instance