大话设计模式(读书笔记)

大话设计模式

第一章 代码无错就是优?-- 简单工厂模式

1.1 面试受挫:使用面向对象语言实现计算器控制台运算程序

1.2 初学者代码毛病:命名规范,特殊情况

1.3 代码规范

1.4 面向对象编程:容易维护、容易扩展、容易复用

1.5 活字印刷,面向对象

  1. 只需要该要改的字,此为可维护;
  2. 这些字并非用完这次就无用,完全可以在后来的印刷中重复使用,此为可复用;
  3. 此诗若要加字,只需另刻字即可,这是可扩展;
  4. 只需要将活字移动就可以满足排列需求,此是灵活性好。

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
{
    ...参考上面
}
原文地址:https://www.cnblogs.com/Losers-AFC/p/3306135.html