zoukankan      html  css  js  c++  java
  • 设计模式之开放封闭原则

      What

      开放封闭原则(Open-Closed Principle:OCP),对于扩展是开放的,对于修改是封闭的。软件设计的目标:封装变化、降低耦合,而OCP正是这目标最直接的提现之一。

      Why

      OCP优点就是不会对已有的代码造成影响,减小测试的范围,以及代码的稳定性。

      How

      下面不符合OCP的设计,为什么这样说:如果银行业务需要增加其他的功能,比如转账业务,那么我们需要修改BankProcess类,违反了对于修改是封闭的

      class BankProcess
        {
            //存款
            public void Depsite()
            {
                Console.WriteLine("存款业务");
            }
    
            //取款
            public void Withdraw()
            {
                Console.WriteLine("存款业务");
            }
        }

      那么我们怎来设计才能符合OCP原则呢?将业务功能抽象为接口,当业务依赖固定的抽象时,对修改那就是封闭的,而通过继承和多态 ,从抽象体中扩展出新的实现,就是对扩展的开放

      interface IBankProcess
        {
            void Process();
        }

      存款业务实现

       class DepsiteProcess : IBankProcess
        {
            public void Process()
            {
                Console.WriteLine("存款");
            }
        }

      取款业务实现

       class WithdrawProcess : IBankProcess
        {
            public void Process()
            {
                Console.WriteLine("取款");
            }
        }

      对于转账业务,我们进行扩展,这里我们就不要去修改原来已经有的代码了,只需要扩展一个新的业务类就可以了

      class Transfer : IBankProcess
        {
            public void Process()
            {
                Console.WriteLine("转账");
            }
        }

       抽象是有好处的,但是把握好抽象的度也是很重要的,拒绝滥用抽象,只讲经常变化的部分抽象。

  • 相关阅读:
    机器学习的模型泛化
    机器学习中的过拟合和欠拟合及交叉验证
    sklearn中的多项式回归算法
    PCA算法提取人脸识别特征脸(降噪)
    sklearn中调用PCA算法
    python实现PCA算法原理
    PCA主成分分析算法的数学原理推导
    python表白实现代码(可视化与动画版)
    《C++ Primer Plus》第7章 函数——C++的编程模块 学习笔记
    C++函数指针
  • 原文地址:https://www.cnblogs.com/XzcBlog/p/4190851.html
Copyright © 2011-2022 走看看