设计模式六大原则--开放-封闭原则-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

设计模式六大原则--开放-封闭原则

简介:

       背景

       刚刚手机连上网,发现又有一大堆可以升级的软件。怎么回事?记得刚升级不久啊,难道做一个成熟的APP这么简单。联想到刚刚学习的设计模式,想着这可能是设计模式中的开放-封闭原则在其中起了不小的作用,下面我们详细的了解一下什么是开放-封闭原则(Open-Closed Principle OCP)吧。

       定义

       软件实体应该可以扩展,但是不可修改(Software entities(classes,modules,functions etc) should open forextension ,but close for modification)。

       详细说明:

       开发-封闭原则其实是有两个特征:

       1、对于扩展是开放的(Openfor extension)

       2、对于更改是封闭的(Closedfor modification)

       用途

       我们做任何系统都不要指望系统一开始时需求确定,就再也不发生变化,这是不现实也不科学的,既然系统一定会发生需求的变化,一定会出现修改,那么我们在设计软件时就要考虑“怎样设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本”。

       一句话总结就是:软件需求总是变化的,世界上没有一个软件的是不变的,因此对软件设计人员来说,必须在不需要对原有系统进行修改的情况下,实现灵活的系统扩展。

       示例

       下面是一般面向对象的方法编写的简单计算其中关于运算符类的相关代码,每次增加新的运算符时必须更改整个类。

public class Operation
    {
        public static double GetResult (double numberA,double numberB,string operate)
        {
            double result = 0d;
            switch(operate)
            {
                case "+":
                    result = numberA + numberB;
                    break;
                case "-":
                    result = numberA - numberB;
                    break;
                case "*":
                    result = numberA * numberB;
                    break;
                case "/":
                    result = numberA / numberB;
                    break;
            }
            return result;
        }
    }

       当我们每次需要增加某一个运算符我们都需要去改变整个类,如果是一个复杂的项目我们无法想象会遇到多么大的问题。而如果我们运用抽象工厂方法的话,就解决了这个问题(可用如下类图所示方法)。                       

       优点

       开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章
最新文章
相关文章