
设计原理
文章平均质量分 66
yjc0403
这个作者很懒,什么都没留下…
展开
-
设计原则--好莱坞原则
“不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)”这是著名的好莱坞原则。在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。 好莱坞,一个让许多俊男靓女欲罢不能的地方。在通往成功的路上,有谁不愿意通过捷径而一炮而红,在这之中影视声色...原创 2015-07-15 17:56:56 · 1018 阅读 · 1 评论 -
设计原则--多用组合少用继承
举例说明:我们知道米饭和豆沙都是(继承)食品,然后我们用米饭包住豆沙放在锅里蒸一下,我们就得到了(派生)粽子。这样的结构是: 食品 / \米饭 豆沙 \ / 粽子这是一个菱形,于是被成为钻石问题:如果食品里有一个成员 "好吃程度",那么粽子的"好吃程度"是继承自哪一个呢?在C++这个支持多继承的语言里面,如果直接使用 粽子 粽子a;cou...原创 2014-11-26 00:32:41 · 295 阅读 · 0 评论 -
设计原则--封装变化原则
封装变化点。隔离变化点的好处在于,将系统中经常变化的部分和稳定的部分隔离,有助于增加复用性,并降低系统耦合度。很多设计模式的意图中都明显地指出了其对问题的解决方案,学习设计模式的要点是发现其解决方案中封装的变化点。abstract class Person{ //简单的给出了两个属性,姓名和性别 protected String name=""; protected Strin...原创 2014-11-25 23:58:00 · 735 阅读 · 0 评论 -
设计原则--依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I...原创 2014-11-24 01:55:33 · 103 阅读 · 0 评论 -
设计原则--接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则: ...原创 2014-11-24 01:52:58 · 93 阅读 · 0 评论 -
设计原则--最少知识原则
定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才...原创 2014-11-24 01:47:26 · 175 阅读 · 0 评论 -
设计原则--开闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 开闭原则是面向对象设...原创 2014-11-24 01:24:41 · 113 阅读 · 0 评论 -
设计原则--单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时...原创 2014-11-21 09:32:34 · 116 阅读 · 0 评论 -
设计原则--里氏替换原则
肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。 定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生...原创 2014-11-21 09:21:46 · 184 阅读 · 0 评论 -
设计原则
软件理论设计总结:1. 设计原则—SOLID:S:单一职责原则;O:开放关闭原则;L:里氏替换原则;I:接口分离原则;D:依赖倒置原则。 参考:http://www.cnblogs.com/shanyou/archive/2009/09/21/1570716.html 单一职责原则:一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类。 ...原创 2014-11-14 11:29:34 · 160 阅读 · 0 评论 -
软件结构设计
软件结构设计主要分为:1. 面向过程2. 面向对象3. 面向组件4. 面向服务 面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,但常常会导致所有的代码都包含在几个模块中,使程序难以阅读和维护。在做一些修改时常常牵一动百,使以后的开发和维护难以为继。 面向对象:1. 把算法与数据结构看做是一个整体,称作对象,现实世界中任何类的对象都具有一定的属性和操作,也...原创 2014-11-12 15:42:16 · 265 阅读 · 0 评论 -
设计的目的
降低系统的复杂度:1. 众所周知,随着硬件的飞速发展,计算机的计算能力越来越强大,人们对软件期望也越来越高,而软件复杂度又与它的规模成指数倍数增长。软件复杂度可以说是软件开发的第一大难题。2. 如何降低系统的复杂度:首先它按类来组织系统,把系统分成几个大的部分,每个部分又由更小的子类组成,如此细分下去直到我们能轻易实现它为此,这种分而治 之的方法符合人类解决复杂问题的习惯。其次是它采用从抽象到...原创 2014-11-12 14:36:32 · 280 阅读 · 0 评论 -
Java面向对象16种设计原则
一 类的设计原则 1 依赖倒置原则-Dependency Inversion Principle (DIP)2 里氏替换原则-Liskov Substitution Principle (LSP)3 接口分隔原则-Interface Segregation Principle (ISP)4 单一职责原则-Single Responsibility Principle (...原创 2014-11-26 00:56:03 · 199 阅读 · 0 评论