`
twypx
  • 浏览: 14094 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

设计模式(一)——面向对象原则

阅读更多

面向对象设计原则总结来讲包含六大基本原则,即开闭原则、里氏代换原则、合成复用原则、接口隔离原则、迪米特法则和依赖倒转原则。

 

掌握这六大基本设计原则的精髓,才能真正为以后的设计模式的学习做好铺垫,才能整理理解面向对象开发设计的原理,能够实现代码复用、开发可扩展、可重用的高质量代码。

 

开闭原则,即面向扩展开放,面向修改封闭,也就是说系统支持扩展,但是不支持修改。为什么这么说?在开发阶段,我们都知道,如果对一个功能进行扩展,如果只是一味地对方法进行修改,可能会造成一些问题,诸如可能会引入新的bug,或者增加代码的复杂度,对代码结构造成破坏、冗余,还需要重新进行全面的测试。那么该怎么解决这些问题?很简单,这就需要系统能够支持扩展,只有扩展性良好的系统,才能在不进行修改已有实现代码的基础上,引进新的功能。

 

要做到开闭原则,就需要多使用抽象类或者接口,将相似的类进行抽象,将公有的功能引入到抽象类中,这样在进行扩展时,只需要依据抽象类,生成新的子类即可。

 

里氏代换原则,即任何使用基类的地方,都能够使用子类替换,而且在替换子类后,系统能够正常工作。里氏代换原则在我们平时开发中用得很多,只要是实现了开闭原则,只要用到了抽象类或者接口,就应该会遇到。

 

而开闭原则和里氏代换原则则是我们下面要说的依赖倒转原则的基础。

 

什么是依赖倒转原则?就是说我们的client类要依赖于抽象,而不是依赖于具体,也就是我们经常听到的“要面向接口编程”。在具体的实现中,如果一个类是依赖于一个抽象类,比如用一个抽象类做为方法的参数,那么在实现时就可以灵活的切换这个抽象类的子类。

 

接口隔离原则,主要说的是应该将接口粒度最小化,将功能划分到每一个不能再分的子角色,为每一个子角色创建接口,通过这样,才不会让接口的实现类实现一些不必要的功能。比如一个门有如下功能:开门、关门、响门铃;但是只有有门铃的门才能响门铃,没有门铃的门就只能开门、关门。因此如果门没有门铃而实现了这个接口的话,就多出了响门铃的功能。因此,需要将门这个接口分为两个接口:“开门、关门”、“响门铃”。

 

迪米特法则,主要是说尽量减少类之间的依赖关系,降低类之间的耦合。在应用中最直接的实现就是在两个类中间建一个中介类。但是这样可能会造成中介类的澎爆。

 

合成复用原则,也就是少用继承,多用组合。使用组合也就是将两个类之间建立关联关系,将一个类做为另一个类的属性。这个主要是区分两个角色之间是“is a”还是“has a”的关系,如果是“is a”就需要使用继承,而如果是“has a”就需要使用组合。例如电脑可以分为台式机和笔记本,这就是is a的关系,但是电脑与CPU就是has a的关系。

分享到:
评论

相关推荐

    23种 设计模式---面向对象的基本原则

    NULL 博文链接:https://hudeyong926.iteye.com/blog/779070

    戏说面向对象程序设计

    四大发明之活字印刷——面向对象思想的胜利 第一章............面试受挫——代码无错就是好? 第二章............代码规范、重构 第三章............复制VS复用 第四章.......

    GOF的23种设计模式,及设计模式的六大原则

    GOF是设计模式的经典名著Design Patterns: Elements of Reusable Object-Oriented Software(中译本名为《设计模式——可复用面向对象软件的基础》)的四位作者,他们分为是:Elich Gamma、Richard Helm、Ralph ...

    面向对象设计模式与原则

    每一个模式描述了一个在我们周围不断重复 发生的问题,以及该问题的解决方案的核 ...面向对象设计模式描述了面向对象设计过程中、特 定场景下、类与相互通信的对象之间常见的组织关 系。 人是一个经验性的动物

    kunlingou#lifealien#Java-一览设计模式1

    软件设计模式概述GoF 的 23 种设计模式的分类和功能UML中的类图及类图之间的关系开闭原则——面向对象设计原则里氏替换原则——面向对象设计原则依赖倒置原则—

    Java设计模式 版本2

    Java设计模式,目录:前言,UML建模技术,深入浅出UML类图,从招式与内功谈起——设计模式概述,面向对象设计原则,工厂三兄弟之简单工厂模式,工厂三兄弟之工厂方法模式,工厂三兄弟之抽象工厂模式,确保对象的唯一...

    面向对象程序设计C#版---.zip

    四大发明之活字印刷——面向对象思想的胜利 第一章............面试受挫——代码无错就是好? 第二章............代码规范、重构 第三章............复制 VS 复用 第四章......

    24种设计模式介绍与6大设计原则

    里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能...

    设计模式精解 译者:熊节 程序员必看书籍之一 part2

    本书从一个新的视角描述面向对象设计,将面向中对象编程的原则与运用设计模式力量创建健壮、可靠的软件开发环境结合起来。书中采用实用、恰当的例子,指导读者用模式解决普通的编程问题,并且解释现代软件设计模式的...

    深入浅出面向对象的分析与设计 完整版 PDF Head First Object-Oriented Design and Analysis.part3

     学习如何将OO原则、设计模式及各种开发方法通通整合到OOA&D项目的生命周期里。  运用UML、用例及用例图来确保所有利害关系人都能清楚地进行沟通,协助你交付正确的软件,达到每个人的要求。  通过一连串的脑力...

    敏捷软件开发原则、模式与实践 C#版

    Martin深入而生动地 使用真实案例讲解了面向对象设计的基本原则、重要的设计模式、UML和敏 捷方法。 本书Java版曾荣获2003年第13届Jolt大奖,是公认的经典著作。本书是 C#程序员提升功力的绝佳教程,也可用作高校...

    敏捷软件开发——原则、模式与实践.part2

    《敏捷软件开发——原则、模式与实践》很经典的书,值得一看。有条件的话建议买本书。

    设计模式精解-掌握设计模式

    本书从一个新的视角描述面向对象设计,将面向中对象编程的原则与运用设计模式力量创建健壮、可靠的软件开发环境结合起来。书中采用实用、恰当的例子,指导读者用模式解决普通的编程问题,并且解释现代软件设计模式的...

    设计模式精解 译者:熊节 程序员必看书籍之一 part1

    本书从一个新的视角描述面向对象设计,将面向中对象编程的原则与运用设计模式力量创建健壮、可靠的软件开发环境结合起来。书中采用实用、恰当的例子,指导读者用模式解决普通的编程问题,并且解释现代软件设计模式的...

    design-pattern-java.pdf

    基础知识 基础知识设计模式概述 从招式与内功谈起——设计模式概述(一) 从招式与内功谈起——设计模式概述(二) 从招式与内功谈起——设计模式概述(三) 面向对象设计原则 面向对象设计原则之单一职责原则 面向...

    深入浅出面向对象的分析与设计 完整版 PDF Head First Object-Oriented Design and Analysis.part2

     学习如何将OO原则、设计模式及各种开发方法通通整合到OOA&D项目的生命周期里。  运用UML、用例及用例图来确保所有利害关系人都能清楚地进行沟通,协助你交付正确的软件,达到每个人的要求。  通过一连串的脑力...

    深入浅出面向对象的分析与设计 完整版 PDF Head First Object-Oriented Design and Analysis.part4

     学习如何将OO原则、设计模式及各种开发方法通通整合到OOA&D项目的生命周期里。  运用UML、用例及用例图来确保所有利害关系人都能清楚地进行沟通,协助你交付正确的软件,达到每个人的要求。  通过一连串的脑力...

    大话设计模式的源码 pdf文件在我空间免费下载

     本书通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解GoF(设计模式的经典名著——Design Patterns:Elements of Reusable Object-Oriented Software,中译本名为《设计模式——可复用面向对象软件的...

    Java设计模式——工厂设计模式

    面向对象设计的基本原则: OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。 DIP(依赖倒转原则,Dependence Inversion Principle):要针对接口编程,不要针对实现编程。 LoD...

Global site tag (gtag.js) - Google Analytics