/*
简单工厂模式实现计算两个数的加减乘除
*/
/*
实现该算法需要抽出一个抽象产品--计算器
抽象产品的子类有四个--加法,减法,乘法和除法计算器
一个工厂--生成抽象产品--计算器
*/
using System;
//抽象产品的定义
public interface calculator {
double GetResult(double a, double b);
}
//子类产品的定义
public class AddCalculator : calculator {
public double GetResult(double a, double b) {
return (a + b);
}
}
public class SubstractCalculator : calculator {
public double GetResult(double a, double b) {
return (a - b);
}
}
public class MultiplyCalculator : calculator {
public double GetResult(double a, double b) {
return (a * b);
}
}
public class DivideCalculator : calculator {
public double GetResult(double a, double b) {
if (b != 0)
{
return (a / b);
}
else {
return 0;
}
}
}
//工厂的定义
public class calfactory {
public calculator Createcalculator(string opt) {
switch (opt) {
case "+":return new AddCalculator();
case "-":return new SubstractCalculator();
case "*":return new MultiplyCalculator();
case "/":return new DivideCalculator();
//default:Console.WriteLine("不存在该选项");break; 错误提示:该函数的处理并不是每个结果都符合函数返回值
default: Console.WriteLine("不存在该选项"); return null;
}
}
}
public class program {
public static void Main(string[] args) {
double a=10, b=5, r;
calfactory mycalfactory = new calfactory();
calculator mycalculator = mycalfactory.Createcalculator("+");
r = mycalculator.GetResult(a, b);
Console.WriteLine("result:" + r);
mycalculator = mycalfactory.Createcalculator("-");
r = mycalculator.GetResult(a, b);
Console.WriteLine("result:" + r);
mycalculator = mycalfactory.Createcalculator("*");
r = mycalculator.GetResult(a, b);
Console.WriteLine("result:" + r);
mycalculator = mycalfactory.Createcalculator("/");
r = mycalculator.GetResult(a, b);
Console.WriteLine("result:"+r);
}
}