大话设计模式(读书笔记)
大话设计模式
第一章 代码无错就是优?-- 简单工厂模式
1.1 面试受挫:使用面向对象语言实现计算器控制台运算程序
1.2 初学者代码毛病:命名规范,特殊情况
1.3 代码规范
1.4 面向对象编程:容易维护、容易扩展、容易复用
1.5 活字印刷,面向对象
- 只需要该要改的字,此为可维护;
- 这些字并非用完这次就无用,完全可以在后来的印刷中重复使用,此为可复用;
- 此诗若要加字,只需另刻字即可,这是可扩展;
- 只需要将活字移动就可以满足排列需求,此是灵活性好。
1.6 面向对象的好处:通过封装、继承、多态把程序的耦合度降低,用设计模式可以使得程序更加的灵活,容易修改,而且易于复用。
1.7 复制 VS. 复用: 复制黏贴是非常不好的编码习惯,分一个类出来,让计算和现实分开
1.8 业务的封装:让业务逻辑和界面逻辑分开,让其耦合度下降才可以达到容易维护或扩展。
Operation运算类
public class Operation{
public static double GetResult(double numberA , double numberB, string operate)
{
double result = 0d;
switch(operate)
{
...
}
return result;
}
}
客户端代码
static void Main(string[] args){
try
{
console.write("");
...
}
catch
{
}
}
1.9 紧耦 VS. 松耦合
如果要加一个平方根运算
把加减乘除等运算分离,修改其中一个不影响另外的几个,增加运算算法也不影响其他代码
Operation运算类 public class 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
{
...参考上面
}
class OperationMul:Operation
{
...参考上面
}
class OperationDiv:Operation
{
...参考上面
}