呼呼ozZ 2014-06-16
面向对象好处:可维护、可扩展、可复用、灵活性好
单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。
开放-封闭原则:软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。
依赖倒转原则:
A.高层模块不应该依赖低层模块。两个都应该依赖抽象。
B.抽象不应该依赖细节。细节应该依赖抽象。
迪米特法则:如果两个类彼此不必直接通信,那么这两个类就不必发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的时候,可以通过第三者转发这个调用。
这 7 种设计原则是软件设计模式必须尽量遵循的原则,各种原则要求的侧重点不同。
simple responsibility principle 单一职责原则。there should never be more than one reason for a class to change. 一个类中应该只处理一个职责,而不应该同时处理多
一个类,应该只有一个引起变化的原因、只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在一起,这会导致脆弱的设计。当一个职责发生变化时,可能会影响其他的职责。另外,多个职责偶合在一起,会影响复用性。当由于职责 P1 需要
这样才能规避修改代码带来的大风险。未来使程序拓展性好,易于维护和升级。我们需要使用接口和抽象类等。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受影响时,基类才能真正被复用,而衍生类也能在基类的基础上增加新的行为。LSP是对开闭原则的
我们在编程的时候,经常会给一个类添加各种各样的功能,如果一个类承担的职责过多,就相当于把这些职责耦合在了一起,一个职责的变化可能会削弱或者一直这个类完成其他职责的能力,这种耦合会导致脆弱的设计。定义为“引起变化的原因”。在设计中为每一种职责设计一个类,SR
就一个类而言,应该仅有一个引起它变化的原因。软件实体应该是可以扩展的,但是不可修改。对于扩展是开放的,对于更改是封闭的.Hollywood原则:"Don'tcallus,we'llcallyou".程序中所有的依赖关系都应该终止于抽象类
总所周知设计模式(原则)对于设计出高扩展性、可复用性、易维护性的软件起到很大的作用。常说的SOLID五大设计原则指的就是:。如果类包含多个职责,代码会变得耦合;SRP看起来是把事物分离成分子部分,以便于能被复用和集中管理,这点也同样适用于方法级别。I. 如
在使用面向对象的思想进行系统设计时,前人共总结出了7条原则,它们分别是:单一职责原则、开闭原则、里氏替换原则、依赖注入原则、接口分离原则、迪米特原则和优先使用组合而不是继承原则。单一职责原则的核心思想就是:系统中的每一个对象都应该只有一个单独的职责,而所有
面向对象”是专指在程序设计中采用封装、继承、多态等设计方法,达到高内聚、低耦合的效果。一个好的系统设计应该具备以下几个性质:灵活性,可扩展性,可插入性。才能让软件具有可维护性和可复用性。常用的面向对象设计原则包括7个,这些原则并不是孤立存在的,它们相互依赖
面向对象的S.O.L.I.D 原则一般来说这是面向对象的五大设计原则,但是,我觉得这些原则可适用于所有的软件开发。Unix/Linux是这一原则的完美体现者。里氏替换原则LSP是使代码符合开闭原则的一个重要保证。在很多情况下,在设计初期我们类之间的关系不是
对于面向对象的软件系统设计来说,可维护和可重用是两大指标。- 里氏代换原则:基类可以出现的地方,一定可以用子类来替换。- 依赖倒转原则: 要依赖于抽象类,而不是具体类。- 接口隔离原则: 使用多个专门的接口比使用单一的总接口要好,基于角色分离。- 简单工厂
这个原则有两个特性,一个是说“对于扩展是开放的”,另一个是说“对于更改是封闭的”。面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。修改接口 在IBook接口中,增加一个方法getOffPrice(),专门用于进行打折处理,所有的实现类
显然我们需要一些原则来指导包的划分,以下列出这些原则,前三个原则用来指导把类划分到包中,关注包的内聚性,后三个原则用来处理包之间的相互关系,关注包的耦合性。
1,描述:对一个类而言,应仅有一个引起它变化的原因。通俗地说就是一个类只做一件事。2,好处:提高内聚,降低耦合。3,应用模式:命令模式和状态模式、工厂模式、策略模式就是单一职责原则的应用,解耦了发送者与接受者的联系,使系统的结构清晰,利于扩展与维护。1,描
要保证做到这一点,一个具体的类应等只实现接口和抽象类中声明过的方法,而不应当给出多余的方法.而作为一个已有的具体类添加一个抽象类作为抽象类型不那么容易,因为这个具体类有可能已经有一个超类.这样一来,这个新定义的抽象类只好继续向上移动,变成这个超类的超类,如
OCP原则就是在不修改源代码的情况下,设计方案能适应于各种扩展的需求。做到OCP有两点:抽象、对可变性封装。任何基类可以出现的地方,子类一定可以出现。要依赖于抽象,不要依赖于具体实现。DIP跟另一种说法含义相近:面向接口编程。应当为客户端尽可能小的单独的接
开闭原则讲的是:一个软件实体应当对扩展开放,对修改关闭。设计的关键在于抽象化,可以给出一个或多个抽象类或接口,规定出所有的具体类必须提供的方法的特征作为系统设计的抽象层。这个抽象层预见了所有的可扩展性,因此,在任何扩展情况下都不会改变。里氏代换原则讲的是:
GRASP的核心是自己干自己能干的事,自己只干自己的事,也就是职责的分配和实现高内聚。用来解决面向对象设计的一些问题。GRASP提出了九大原则,下面笔者将对这九大设计原则做一一阐述。预计识别不稳定的因素,在其外部创建稳定的接口。
软件设计一直是开发周期中最重要的阶段,在设计弹性和灵活的体系结构的花费的时间越多,在将来出现变更时就越节省时间。需求总是变化的,如果不定期添加或维护功能,软件将出现为遗留问题,并且变更成本是根据系统的结构和体系结构来确定的。在本文中,我们将讨论有助于创建易
最近又翻起阎宏博士的《Java与模式》这本书,此书语言浅显易懂,且内容充实,值得反复阅读思考,就像好的电影都会让你想有时间再翻出来再看看,此书也是一样。翻阅之中,觉得还是把内容摘抄下来,一是避免捧着这本大块头的痛苦,二是便于自己整理思路。以下内容大部分摘自
在软件软件系统中,一个模块设计得好不好的最主要、最重要的标志,就是该模块在多大程度上将自己的内部数据和其他与实现有关的细节隐藏起来。这样一来,模块与模块之间就可以仅仅通过彼此的API相互通信,而不理会模块内部的工作细节。OO设计根本的指导原则是提高可维护性
1. 操作系统 select poll epoll NIO AIO, 用户态,内核态https://segmentfault.com/a/1190000003063859 介绍IO多路复用的(完成) http://blog.csdn.net/anxpp/
在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。本文主要将总结这些常见的原则,和具体阐述意义。Single-Responsibility Principle, 一个类,最好只做一件
依赖倒转原则就是要依赖于抽象,不要依赖于实现。要保证做到这一点,一个具体类应当只实现接口和抽象类中声明过的方法,而不要给出多余的方法。依赖倒转原则则是对传统的过程性设计方法的“倒转”,是高层次模块复用及其可维护性的有效规范。一个软件实体应当尽可能少的与其他
在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。本文主要将总结这些常见的原则,和具体阐述意义。第二种更容易理解的定义方式:所有引用基类(父类)的地方必须能透明地使用其子类的对象。即
需要抽线约束,将相同的变化封装到一个接口或抽象类,将不同的变化封装到不同的接口或抽象类中。其实前面的5个原则都是开闭原则的指导设计工具和方法,开闭原则是他们的精神领袖。
开放-封闭原则的意思就是说,你设计的时候,时刻要考虑,尽量让这个类是足够好,写好了就不要去修改了,如果新需求来,我们增加一些类就完事了,原来的代码能不动则不动。这个原则有两个特性,一个是说“对于扩展是开放的”,另一个是说“对于更改是封闭的”。面对需求,对程
下面我将从原文、译文、理解、应用,这四个方面分别进行阐述。说白了就是,不同的类具备不同的职责,各施其责。这就好比一个团队,大家分工协作,互不影响,各做各的事情。抽象不应该依赖于细节,细节应该依赖于抽象。