面向对象编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类
简单工厂模式最大的优点在于工厂类中包含了必要的逻辑判断,根据客户端选择的条件动态的实例化相关的类,对于客户端来说,去除了与具体产品的依赖
利用简单工厂模式编写具有加减乘除运算功能的小程序
public class Operation//Operation运算类
{
//添加两个属性
private double _numberA = 0;
private double _numberB = 0;
//封装两个属性
public double NumberA
{
get { return _numberA; }
set { _numberA = value; }
}
public double NumberB
{
get { return _numberB; }
set { _numberB = value; }
}
//添加可重写的获得结果的方法,返回结果的值
public virtual double GetResult()
{
double result = 0;
return result;
}
}
class OperationAdd : Operation//加法运算类
{
public override double GetResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
}
class OperationSub : Operation//减法运算类
{
public override double GetResult()
{
double result = 0;
result = NumberA - NumberB;
return result;
}
}
class OperationMul : Operation//乘法运算类
{
public override double GetResult()
{
double result = 0;
result = NumberA * NumberB;
return result;
}
}
class OperationDiv : Operation//除法运算类
{
public override double GetResult()
{
double result = 0;
result = NumberA * NumberB;
return result;
}
}
public class OperationFactory//简单运算工厂类
{
public static Operation createOperate(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break;
}
return oper;
}
}
class Program//客户端代码
{
static void Main(string[] args)
{
Operation oper;
oper = OperationFactory.createOperate("+");
oper.NumberA = 56;
oper.NumberB = 55;
double result = oper.GetResult();
Console.WriteLine(result);
Console.ReadKey();
}
}
}