这篇文章我会不停的维护它,它将会越来越长,但它是关于我在面向对象中的一些学习的思考心得。希望对自己对各位都能实用处。



    开篇前,说明一下写这篇文章的原因。原因是由于设计模式。由于设计模式里的各种模式。都是建立在这些原则之上的。

好比盖房子须要夯实的地基,或者比作数学论证中的使用到的公理。你不能说为什么盖房子一定要建立在地基之上。也不能说为什么两点一直线,三点一面这些公理为什么就这么牛逼的存在,由于这是自然规律。你必须遵守它们。

这些设计原则也类似,它们没有24种设计模式那样华丽的身姿,但它们是程序设计江湖上真正的法则。

很多的大师总结出了这些原则。告知了我们这些后辈。我们了解了它们,会让我们更好的设计出优秀的软件框架来。

首先,先做一下知识的普及。

假设你在一些文章中看到OOD,你要懂得,这是面向对象设计(Object-Oriented Design。OOD)。假设看到一些设计书籍提到OOD,我们便知道这是指面向对象设计的意思。



    接下来,真正的主角们,这些江湖上的大佬登场了。

这些原则,盼望我们都能全然懂得。

  OOD七大设计原则一:开闭原则(Open-closed
Principle。OCP)

这个原则是由Bertrand
Meyer大师在1988年提出的。那时候我才1岁。这个原则是这样定义的:

    Software entities should be open for extension,but closed for modification。

多简单啊?!这个原则的意思大概是说:软件对扩展应该是开放的,对改动应该是关闭的。说的更通俗点儿。就是说我们开发了一个软件。应该能够对它进行功能扩展(开放)。而在进行这些扩展的时候,不须要对原来的程序进行改动(关闭)。



    各位。假设我们有经历一段时间的开发。会发现,一个软件的代码设计。假设能做到对功能扩展,对改动关闭是多么棒的事儿。这意味着这个软件维护的稳定性会大大提高,由于对改动关闭嘛,所以之前的代码,不须要太多的改动,我们以前都做过全文搜索复制替换部分文件的事情,或者在好多个文件里反复的改动某段代码。假设我们的软件编码能依照对扩展开发,对改动关闭的原则去编写,尽力的让这个原则更好的体如今软件设计中,这就是一个很棒的设计了。



    总结一下。假设依照OCP原则,软件设计开发中,会有例如以下的长处:

     1.在软件可用性上,很灵活。你能够在软件完毕对软件进行扩展。添加新的功能。这样,这个软件就能够通过不断的添加新模块满足不断变化的新需求!

2.因为对软件原来的模块不能改动。因此不用操心软件的稳定性。



    对OCP的实现,主要用到的就是抽象。各位,你们在编写代码的时候,会不会常常使用抽象的思想呢。

一定要用上抽象的思想去写代码。把系统全部可能的行为抽象为抽象底层,这些抽象类规定出全部详细的类必须提供的方法,这些作为系统设计的抽象层。

所以使得在不论什么可扩展的情况下。系统的抽象层不须要改动。同一时候。我们也能够从抽象层再派生出其它的抽象类来改动或扩展系统的行为。因此,对于可变部分,是能够扩展的。



    我们也非常easy想到,在一開始进行软件设计的时候。把全部的东西都面面俱到的考虑到是不可能的(有时候也不合适)。全部可变的东西都写入到抽象底层是不可能的。

因此,开闭原则非常难被全然实现。仅仅能在某些模块,某些程度。某个限度内使用这个原则。所以说,OCP具有理想主义的色彩。是OOD设计的终极目标。

因此,对OCP的设计原则。很多OOD大师都费尽心思,研究OCP的实现方式。

非常多原则,如:里氏代换原则、合成复用原则,依赖倒转原则。接口隔离原则,抽象类,迪米特法则等,都能够看作是OCP的实现方法。

本文參考:http://blog.csdn.net/brookes/article/details/1896422

(2014-08-22。临时写到这。)

面向对象设计(OOD)七大原则的更多相关文章

  1. C#面向对象设计的七大原则

    本文我们要谈的七大原则,即:单一职责,里氏替换,迪米特法则,依赖倒转,接口隔离,合成/聚合原则,开放-封闭 . 1.   开闭原则(Open-Closed Principle, OCP) 定义:软件实 ...

  2. S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则

    注:以下图片均来自<如何向妻子解释OOD>译文链接:http://www.cnblogs.com/niyw/archive/2011/01/25/1940603.html      < ...

  3. # 61条面向对象设计的经验原则-《OOD启思录》Arthur J.Riel

    61条面向对象设计的经验原则-<OOD启思录>Arthur J.Riel 原文 http://blog.csdn.net/cpluser/article/details/129291 61 ...

  4. OOD 面向对象面试干货分享| 面向对象设计的SOLID原则

    S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写. 简写 全拼 中文翻译 SRP The Single Res ...

  5. Java成长第五集--面向对象设计的五大原则

    S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则(Programming Priciple)的首字母缩写.以下图说明: 下面就个人的理解来说说这五大原则的含义到 ...

  6. 面向对象设计SOLID五大原则

    转载自:码农社区,http://w3croom.com/read.php?tid-4522.html 今天我给大家带来的是面向对象设计SOLID五大原则的经典解说.       我们知道,面向对象对于 ...

  7. 【转】面向对象设计的SOLID原则

    S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写. SRP The Single Responsibility ...

  8. 面向对象设计的SOLID原则

    S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写. SRP The Single Responsibility ...

  9. Delphi面向对象设计的经验原则(61条)

    (1)所有数据都应该隐藏在所在的类的内部. (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者. (3)尽量减少类的协议中的消息. (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深 ...

  10. JAVA 设计的七大原则

    一.开闭原则 开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类.模块和函数应该对 扩展开放,对修改关闭. 所谓的开闭,也正是对扩展和修改两个行为的一个原则.强调 的 ...

随机推荐

  1. linux rar 解压忽略带密码压缩包

    #解压忽略密码 rar x -p- file.rar #解压忽略子目录 rar x -ep file.rar

  2. 如何使用JAVA请求HTTPS

    JDK对应的TLS版本(仅供参考) 1.写一个SSLClient类,继承至HttpClient import java.security.cert.CertificateException; impo ...

  3. JavaScript中的常用的数组操作方法

    JavaScript中的常用的数组操作方法 一.concat() concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,仅会返回被连接数组的一个副本. var arr1 = [1,2 ...

  4. ubuntu中taglist和ctags安装,简单明了

    1.使用命令安装ctags: sudo apt-get install ctags 2.安装taglist 下载: http://vim.sourceforge.net/scripts/downloa ...

  5. vijos-1382 寻找主人

    题意: 给出两个同样长度的数字串: 求两个串是否本质同样.同样则输出最小表示. 长度L似乎给的不正确,大概是2000000左右吧: 题解: 最小表示法裸题.证明正确性啥的详见论文吧: 这东西大体的思路 ...

  6. hdu_2191多重背包

    用二维数组解的,因为忘了memset害我wa了好几发... #include<iostream> #include<cstdio> #include<cstring> ...

  7. m_Orchestrate learning system---二十二、html代码如何变的容易

    m_Orchestrate learning system---二十二.html代码如何变的容易 一.总结 一句话总结:(结构清晰之后构建页面就变得超级容易了)(多做多用一下子就熟了) 1.文章显示页 ...

  8. [jzoj NOIP2018模拟10.29]

    OI生涯的最高分,来了纪中这么多天,在经历了这么多场“NOIP难度”的模拟赛之后,终于看到了真正的NOIP 今天考场上效率很高,很快码完了全部的题目,留下了足够的时间对拍和...发呆.不得不说看着电脑 ...

  9. 使用JS方法使页面滚动到指定元素+优化+API介绍(动画)

    前言 当页面最上部有顶部菜单是,使用锚点跳转的方法很容易挡住想要呈现的内容(如下图技能两个字被挡住了一半),为避免出现这样的问题,故滚动到指定元素使用用JS的方法来实现. 目录 使用的API简介 初版 ...

  10. 重温前端基础之-js排序算法

    javascript数组常用的方法: push():返回值,数组新的长度 pop():返回值,被删除的数组末尾元素 shift():返回值,被删除的数组首部元素 unshift():返回值,数组新的长 ...