码迷,mamicode.com
首页 > 其他好文 > 详细

开放封闭原则

时间:2014-12-29 00:58:22      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

  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("转账");
        }
    }

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

开放封闭原则

标签:

原文地址:http://www.cnblogs.com/XzcBlog/p/4190851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!