`
flyingdutchman
  • 浏览: 354006 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
       在软件设计中,特别是OOP的类设计中,有六大原则:
              ●开闭原则(Open-Closed Principle)      
              ●依赖倒置原则(Dependence Inversion Principle)
              ●接口隔离原则(Interface Segregation Principle)
              ●里氏代换原则(Liskov Substitution Principle)
              ●迪米特原则(Law of Demeter)
              ●合成复用原则(Composite/Aggregate Reuse Principle)
              ●单一职责原则(Single-Responsibility Principle)
      
        开闭原则
        开闭原则中国的“开(Open)”是对功能开发即扩展,而“闭(Closed)”失败源代码的修改关闭,即不允许修改源代码而对扩展功能。装饰模式就是符合该原则的开发模式。
        那么如何在设计中实现“开-闭”原则呢?解决问题关键在于抽象化,抽象化是面向对象设计的第一个核心本质。对一个事物抽象化,实质上是在概括归纳总结它的本质,抽象让我们抓住最最重要的东西,从更高一层去思考。在面向对象编程中,通过抽象类及接口,规定了具体类的特征作为抽象层,相对稳定,不需更改,从而满足“对修改关闭”;而从抽象类导出的具体类可以改变系统的行为,从而满足“对扩展开放”。

        依赖倒置原则
        “依赖倒置”就是要依赖于抽象,不要依赖于具体。抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。
        那么怎么才能做到“依赖倒置”呢?不依赖于具体类,即程序中所有的依赖关系都应该终止于抽象类或者接口。尽量做到:
        1)、任何变量都不应该持有一个指向具体类的指针或者引用;
        2)、任何类都不应该从具体类派生;
        3)、任何方法都不应该覆写它的任何基类中的已经实现的方法。
   
        接口隔离原则
        “接口隔离”是说使用多个专一功能的接口比使用一个的总接口总要好,一个类对另外一个类的依赖性应当是建立在最小接口上的。

        里氏代换原则
        “里氏代换”是说子类型必须能够替换它们的基类型,一个软件实体如果使用的是一个基类,那么当把这个基类替换成继承该基类的子类,程序的行为不会发生任何变化。软件实体察觉不出基类对象和子类对象的区别。可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。

        迪米特原则
        迪米特原则即迪米特法则,这是要求类之间交互时应该暴露给外部最少的信息。
        迪米特法则的主要用意是控制信息的过载,在将其运用到系统设计中应注意以下几点:
        1) 在类的划分上,应当创建有弱耦合的类。类之间的耦合越弱,就越有利于复用。
        2) 在类的结构设计上,每一个类都应当尽量降低成员的访问权限。一个类不应当
           public自己的属性,而应当提供取值和赋值的方法让外界间接访问自己的属性。
        3) 在类的设计上,只要有可能,一个类应当设计成不变类。
        4) 在对其它对象的引用上,一个类对其它对象的引用应该降到最低。

        合成复用原则
        “合成复用”就是要尽量使用合成/聚合,尽量不要使用继承。       
        如果新对象的某些功能在别的已经创建好的对象里面已经实现,那么尽量使用别的对象提供的功能,使之成为新对象的一部分,而不要自己再重新创建。

        单一职责原则
        就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。
分享到:
评论

相关推荐

    Java OOP 面向对象基础代码实例.rar

    Java OOP 面向对象基础代码实例,代码主要涉及分析类之间的关系、聚集和组合、依赖与继承、有理数类Rational、类的设计原则、内聚性、实例Instance和静态修饰符Static、用顺序图和状态图模拟动态行为、使用Java API...

    面向对象的六大基本原则.md

    介绍面向对象(OOP)的六大基本设计原则,使用markdown格式编写,使用浏览器即可查看! 让我们一起new一个对象吧~O(∩_∩)O

    c++ 面向对象设计五大原则

    面向对象设计的主要任务就是类的设计,不少面向对象(OO)的先驱和前辈已经提出了很多关于类的设计原则,用于指导OOP,其中就包括类设计的五项基本原则。 1.单一职责原则(Single Resposibility Principle,SRP) ...

    面向对象(Java)思想与设计原则.ppt

    适合java培训,授课使用的面向对象思想与oop设计原则

    C++面向对象程序设计课件

    面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:...

    面向对象设计原则.doc

    面向对象设计原则,doc格式,方便编辑整理。

    面向对象开发实践之路(Delphi版)

     本书主要介绍了利用主流开发方法学和技术技巧进行面向对象开发的原则与实践,通过完整剖析一个实际应用程序的设计、开发与实现,深入浅出地阐述ood(面向对象开发)、oop(面向对象程序设计)、tdd(测试驱动开发...

    什么是面向对象的程序设计

    面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:...

    面向对象程序设计课件

    面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。 本课件是学校上课教员用课件,...

    你知道软件设计的6大原则吗?S.O.L.I.D.设计原则

    设计模式的基础是坚实的面向对象设计原则,以Robert Martin的S.O.L.I.D.设计原则为例来讲解这一点。还将介绍Martin Fowler的Patterns of Enterprise Application Architecture一书中提出的一些更高级的模式

    面向对象开发实践之路:DELPHI版(带完整书签)

     本书主要介绍了利用主流开发方法学和技术技巧进行面向对象开发的原则与实践,通过完整剖析一个实际应用程序的设计、开发与实现,深入浅出地阐述ood(面向对象开发)、oop(面向对象程序设计)、tdd(测试驱动开发...

    PHP_面向对象教程(强力推荐).pdf

    面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程 架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件工程的三个目标:...

    JAVA面向对象详细资料

    35面向对象设计原则 54 1、找出应用中可能需求变化的代码,把它们独立出来,不要和那些需求不变化的的代码混在一起 54 2、针对接口编程,而不要针对实现类编程 54 3、多用组合,少用继承(包含实现) 54 4、为了交互...

    OOP三大原则

    面向对象是编程的规范.类和类之间的以来、关联、聚合、组合关系,面向对象设计原则。

    设计模式第一天学习内容

    3. 了解面向对象设计要解决的问题是什么 4. 记住面向对象七大设计原则是哪些 5. 掌握七大设计原则都解决了什么问题 6. 掌握简单工厂模式 7. 掌握工厂方法模式 8. 掌握抽象工厂模式 9. 掌握原型模式 10. 掌握构建者...

    李維新書--面向对象实践之路(Delphi版)--第八篇 <img src="/ima

    李維又出新書了介紹引用如下:本书主要介绍了利用主流开发方法学和技术技巧进行面向对象开发的原则与实践,通过完整剖析一个实际应用程序的设计、开发与实现,深入浅出地阐述OOD(面向对象开发)、OOP(面向对象程序...

    面向对象的设计的原则 电子版

    OOP编程的指导原则,讲的深入浅出,强烈推荐阅读!

    李維新書--面向对象实践之路(Delphi版)--導讀篇 <img src="/ima

    李維又出新書了介紹引用如下:本书主要介绍了利用主流开发方法学和技术技巧进行面向对象开发的原则与实践,通过完整剖析一个实际应用程序的设计、开发与实现,深入浅出地阐述OOD(面向对象开发)、OOP(面向对象程序...

    李維新書--面向对象实践之路(Delphi版)--第四章 <img src="/ima

    李維又出新書了介紹引用如下:本书主要介绍了利用主流开发方法学和技术技巧进行面向对象开发的原则与实践,通过完整剖析一个实际应用程序的设计、开发与实现,深入浅出地阐述OOD(面向对象开发)、OOP(面向对象程序...

    PHP_面向对象教程(强力推荐)

    面向对象编程 (ObjectOrientedProgramming,OOP, 面向对象程序设计)是一种计算机编程 架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件工程的三个目标:...

Global site tag (gtag.js) - Google Analytics