原则专题提供原则的最新资讯内容,帮你更好的了解原则。
单一职责原则(SRP : Single Response Principle) 就一个类而言,应该仅有一个引起它变化的原因。 在这里,职责的定义是: “变化的原因”。 对于何时遵循SRP有以下的考虑: 1.如果应用程序的变化会影响到类中某一种职责,那么就应该将它与另一种职责分开,这样做可以避免客户应用程序和类中的这两职责耦合在一起。 2.如果应用程序的变化总是会导致两个职责同时变化,那么就不必要分
内聚性(cohesion)定义为:一个模块的组成元素之间的功能相关性。 SRP是指:就一个类而言,应该仅有一个引起它变化的原因。 在SRP中我们把职责定义为“变化的原因”(a reson for change),如果你能够想到多于一个的动机去改变一个类,那么这个类就有多于一个的职责。 变化的轴线仅当变化实际发生时才具有真正的意义。如果没有征兆,那么去应用SRP,或者任何其他原则都是不明智的。 SR
 里氏代换原则由Barbara Liskov于1988年提出,它最开始的定义如下: If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is
 依赖倒转原则包括两个方面: A . HIGH LEVEL MODULES SHOULD NOT DEPEND UPON LOW LEVEL MODULES . BOTH SHOULD DEPEND UPON ABSTRACTIONS. B . A BSTRACTIONS SHOULD NOT DEPEND UPON DETAILS . DETAILS SHOULD DEPEND UPON ABS
合成/聚合复用原则的简单表述:要尽量使用合成/聚合,尽量不要使用继承。 合成与聚合的区别:  合成与聚合都是关联的特殊种类。聚合表示拥有关系或者整体与部分的关系;合成表示一种更强的拥有关系,在一个合成关系里面,部分和整体的生命周期是一样的。一个合成部分只是属于一个合成关系,其多重性只能为1,而聚合则恰恰相反。 在程序实现时都是使用类中一个变量的形式,由程序员区分二者。 Is-A 和Has-A的区别
         里氏代换原则要求任何基类能出现的地方,子类都可以出现。换句话说也就是子类可以  完全替代基类。当我们在继承复用的时侯应该好好考虑这一原则,它对设计出面向对象的系 统有很大的好处。          在JAVA语言中提供了继承机制。当我们要从一个基类继承的时候,我们不能改变被覆盖   (重写)方法的可见性。编译器强制要求我们这么做。而这么做的好处,也可以说是原因就  是我们可以符合
       依赖倒装原则是面向对象设计的很重要的原则之一。这个原则要求: 具体应该依赖于抽象,而不是抽象依赖于具体。只有我们做到了具体依 赖与抽象,这样的系统才可以是可维护,可复用的。传统的复用仅仅只 是限于对具体层次的复用,比如对算法,数据结构,或者对某一个小的 模块的复用。但是在当今面向对象的设计理念里,复用要向更高一个层 次。要复用抽象的东西,也就是复用不容易变化的东西。像现在的面向 接口
 一点说明:OO的五大原则是指SRP、OCP、LSP、DIP、ISP。这五个原则是书中所提到的。除此之外,书中还提到一些高层次的原则用于组织高层的设计元素,这些放到下次再写。当然,OO设计的原则可能不止这五个,希望大家多提宝贵意见,多多交流。       在学习和使用OO设计的时候,我们应该明白:OO的出现使得软件工程师们能够用更接近真实世界的方法描述软件系统。然而,软件毕竟是建立在抽象层次上的东
  OCP作为OO的高层原则,主张使用“抽象(Abstraction)”和“多态(Polymorphism)”将设计中的静态结构改为动态结构,维持设计的封闭性。 “抽象”是语言提供的功能。“多态”由继承语义实现。 如此,问题产生了:“我们如何去度量继承关系的质量?” Liskov于1987年提出了一个关于继承的原则“Inheritance should ensure that any proper
单一职责原则(SRP,Single Responsibility Principle)强调的是职责的分离,在某种程度上对职责的理解,构成了不同类之间耦合关系的设计关键,因此单一职责原则或多或少成为设计过程中一个必须考虑的基础性原则。其核心的思想是:     一个类,最好只做一件事,只有一个引起它变化的原因。 一个违背SRP原则的设计实例:对数据库的操作和用户权限判别封装在一个类中实现,如: pub
开闭原则OCP(Open-Close Principle)被称作是OOD的基石,是OOD最重要的原则之一。 这个原则由大师Bertrand Meyer在1988年提出(汗,那个时候恐怕国内还很少人知道OO,甚至计算机为何物):Software entities should be open for extension,but closed for modification。多简单啊?!这个原则的意
单一责任(SRP),就是一个类而言,应该仅有一个引起它变化的原因。( 不知道是不是有机会用QT 作一个俄罗斯方块的游戏)逻辑和界面分离是一个很重要的原则。 如果一个类承担的责任过多,就等于把这些责任耦合在一个,一个指责的变化可能会削弱或者抑制这个类完成其他责任的能力,这种耦合会导致脆弱的设计,当变化发生时,设计会遭到意想不到的破坏。适当的使用映射?抽象?来减少对于界面的依赖。 软件设计真正要作的许
TDD的目标是Clean code that works。 TDD的两个原则是: 仅当测试失败时才编写新代码 重构以消除重复代码 TDD的五个关键步骤是: 添加一个小的测试 运行所有测试并且失败 做一点修改 运行所有测试并且成功 重构以消除重复
 1、就一个类而言,仅有一个引起变化的原因  2、一个类如果职责过多,就等于吧这些职责都耦合在一起,当修改一个职责的是时候,或多或少会影响到其他职责,这样在修改的时候,会出现意向不到的麻烦  3、软件设计很大一部分是发现职责,并将这些职责划分,至于哪些职责应该划分也不难,只要一个类有多于一个变化的原因,那么他就有多于一个的职责  4、在设计的时候,职责的划分要多考虑。这样设计出来的类才易于扩展、易
  《测试驱动开发》虽然是一本薄薄的书,但解开了我心中不少的疑团,可惜也带来了一堆新的问号。         我们平时开发的流程大致分为两个步骤:确定需求,编码实现。如果分得再细一点,可以分为n个步骤:提出需求、确定需求、编写需求文档、数据库建模和对象建模、编码、集成测试和验收测试。编码的过程又可以分为n个步骤:编写功能代码,单元测试。虽然这种流程不算是RUP,但我觉得却是向着RUP进发。    
2 开闭原则(Open-Closed Principle,OCP) 2.1 什么是开闭原则     开闭原则是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。     1988年,Bertrand Meyer在他的著作《Object Oriented Software Construction》中提出了开闭原则,它的原文是这样:“
依赖倒转原则(针对接口编程,而非实现编程): A. 高层模块不应该依赖底层模块。两个都应该依赖抽象 B. 抽象不应该依赖细节。细节应该依赖抽象   里氏代换原则:子类型必须能够替换掉他们的父类型。   只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类基础上增加新的行为。   由于子类型的可替换性才使得使用父类的模块在无需修改的情况下就可以扩展。   依赖
迪米特法则(Law of Demeter, LoD)又叫最少知识原则(Least Knowledge Principle, LKP)。1987年秋天由美国Northeastern University的 Ian Holland提出,被UML的创始者之一Booch等普及。后来,因为在经典著作《 The Pragmatic Programmer》而广为人知。  迪米特法则可以简单说成:talk onl
      在设计模式中有一个非常有名的设计原则就是依赖倒置的原则,该原则是指越底层的程序应该依赖上层定义的接口,而不是等底层程序编写好后,再进行上层程序的编写。但是在实际情况中,很多开发都是先进行底层程序的编写,然后交给上层应用人员去使用。这样就会出现很多问题。       在实际的安防项目操作中也存在类似现象,很多单位在进行项目启动或计划时,根本没有考虑到系统将来的整合与联网问题,比如某个省的
  设计原则之单一职责原则 单一职责原则:就一个类而言,应该仅有一个引起它变化的原因 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他的职责的能力.这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏. 软件设计真正要做的许多内容,就是发现职责并把那些职责互相分离.如果你能想到多余一个动机去改变一个类,那么这个类就具有多于一个的职责