由于我对C#的理解尚不深入,所以在学习设计模式过程中一并对C#知识进行总结,以供自己以后学习回顾之用。
- 命名要规范
不规范:
Console.Write("请输入数字A");
string A = Console.ReadLine();
规范:
Console.Write("请输入数字A");
string strNumberA = Console.ReadLine();
- Try…catch
写程序时一定要考虑到异常情况,捕捉错误并进行异常处理显得尤为重要。在计算器的例子中考虑到除数可能输入为0,故应增加该语句。
try-catch 语句由一个 try块后跟一个或多个 catch 子句构成,这些子句指定不同的异常处理程序。
- Switch
switch语句是一个控制语句,选择“开关部分” 从候选列表中执行。
每个开关部分包含一个或多个用例标签和含有一个或多个语句的列表。
例如:
switch (strOperate)
{
case "+":
strResult = strNumberA + strNumberB;
break;
case "-":
strResult = strNumberA - strNumberB;
break;
}
面向对象的好处:
面向对象的分析设计编程思想好处在于,可以通过封装、继承、多态把程序的耦合度降低,使程序更加灵活,容易修改,并且易于复用。
有人说,初级程序员的工作就是Ctrl+C和Ctrl+V,这样的话,当代码中重复多到一定程度,维护的时候就是一场灾难。所以我们要尽可能抽象出类,分别进行编程。
简单工厂模式的核心:
在计算器的例子中,定义Operation运算类,这是一个抽象类,有NumberA和NumberB两个属性以及虚方法GetResult()。再定义子类,可继承Operation运算类,包括加减乘除,这里可扩展。接下来用一个特殊的类来实例化对象,这就是工厂,如定义OperationFactory类,简单运算工厂类代码如下:
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;
}
}
这样根据输入运算符工厂就实例化出合适的对象,通过多态返回父类的方式实现计算器的结果。