`
hudeyong926
  • 浏览: 2017233 次
  • 来自: 武汉
社区版块
存档分类
最新评论

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

阅读更多

软件开发原则

原则1:不要重复自己(Don’t Repeat Yourself,DRY原则)
这个原则非常重要,换言之,就是不要写重复的代码。

原则2:尽量简单、一目了然(Keep it Simple Stupid,KISS原则)

所以做到简单的同时,还要做到一目了然。你也可以这样理解,将一个软件做得连白痴都会用。这就是用户体验的最高境界了。如何做到简单且一目了然呢?这要归结到软件开发的可维护性和可理解性

原则3:适可而止(You Ain’t Gonna Need It,YAGNI原则)
YAGNI原则指的是只需要将应用程序必需的功能包含进来,而不要试图添加任何其他你认为可能需要的功能。 在一个软件项目中,往往80%的时间花费在20%的功能上。当你准备列出一个项目清单时,试着考虑以下问题:
通过降低抽象的层级,来实现低复杂度,根据特性将功能独立出来,适度接受非功能性需求,识别耗时的任务,并摆脱它们


为什么要知道面向对象的基本原则呢? 因为我们考察一个设计模式好不好, 一个设计优秀不优秀, 用基本原则来检验.

1.单一职责原则(SRP)

单一职责原则的核心思想就是:系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。它的英文缩写是SRP,英文全称是Single Responsibility Principle。

其实单一职责原则的意思就是开发人员经常说的"高内聚、低耦合"。也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。在设计模式中,所有的设计模式都遵循这一原则。

2.开闭原则(OCP)

开闭原则的核心思想就是:一个对象对扩展开放,对修改关闭。它的英文缩写是OCP,英文全称是Open for Extension,Closed for Modification。

其实开闭原则的意思就是:对类的改动是通过增加代码进行的,而不是改动现有的代码。也就是说,软件开发人员一旦写出了可以运行的代码,就不应该去改变它,而是要保证它能一直运行下去,如何才能做到这一点呢?这就需要借助于抽象和多态,即把可能变化的内容抽象出来,从而使抽象的部分是相对稳定的,而具体的实现层则是可以改变和扩展的。

3.里氏替换原则(LSP)

里氏替换原则的核心思想就是:在任何父类出现的地方都可以用它的子类来替代。它的英文缩写是LSP,英文全称是Liskov Substitution Principle。

其实里氏替换原则的意思就是:同一个继承体系中的对象应该有共同的行为特征。里氏代换原则关注的是怎样良好地使用继承,也就是说不要滥用继承,它是继承复用的基石。

4.依赖注入原则(DIP)

依赖注入原则的核心思想就是:要依赖于抽象,不要依赖于具体的实现。它的英文缩写是DIP,英文全称是Dependence Inversion Principle。

其实依赖注入原则的意思就是:在应用程序中,所有的类如果使用或依赖于其他的类,则都应该依赖于这些其他类的抽象类,而不是这些其他类的具体实现类。抽象层次应该不依赖于具体的实现细节,这样才能保证系统的可复用性和可维护性。为了实现这一原则,就要求开发人员在编程时要针对接口编程,而不针对实现编程。

5.接口分离原则(ISP)

接口分离原则的核心思想就是:不应该强迫客户程序依赖它们不需要使用的方法。它的英文缩写是ISP,英文全称是Interface Segregation Principle。

其实接口分离原则的意思就是:一个接口不需要提供太多的行为,一个接口应该只提供一种对外的功能,不应该把所有的操作都封装到一个接口当中。

6.迪米特原则(LOD)

迪米特原则的核心思想就是:一个对象应当对其他对象尽可能少的了解。它的英文缩写是LOD,英文全称是Law of Demeter。

其实迪米特原则的意思就是:降低各个对象之间的耦合,提高系统的可维护性。在模块之间,应该只通过接口来通信,而不理会模块的内部工作原理,它可以使各个模块耦合程度降到最低,促进软件的复用。

7.优先使用组合而不是继承原则(CARP)

优先使用组合而不是继承原则的核心思想就是:优先使用组合,而不是继承。它的英文缩写是CARP,英文全称是Composite/Aggregate Reuse Principle。

其实优先使用组合而不是继承原则的意思就是:在复用对象的时候,要优先考虑使用组合,而不是继承,这是因为在使用继承时,父类的任何改变都可能影响子类的行为,而在使用组合时,是通过获得对其他对象的引用而在运行时刻动态定义的,有助于保持每个类的单一职责原则。


更多原则不一一细说. 而且如果没在实践中体会他们, 记住文字定义也没有意义.

创建型:

1. 单件模式(Singleton Pattern)

2. 抽象工厂(Abstract Factory)

3. 建造者模式(Builder)

4. 工厂方法模式(Factory Method)

5. 原型模式(Prototype)

结构型

6. 适配器模式(Adapter Pattern)

7. 桥接模式(Bridge Pattern)

8. 装饰模式(Decorator Pattern)

9. 组合模式(Composite Pattern)

10. 外观模式(Facade Pattern)

11. 享元模式(Flyweight Pattern)

12. 代理模式(Proxy Pattern)

13. 模板方法(Template Method)

14. 命令模式(Command Pattern)

15. 迭代器模式(Iterator Pattern)

行为型

16. 观察者模式(Observer Pattern)

17. 解释器模式(Interpreter Pattern)

18. 中介者模式(Mediator Pattern)

19. 职责链模式(Chain of Responsibility Pattern)

20. 备忘录模式(Memento Pattern)

21. 策略模式(Strategy Pattern)

22. 访问者模式(Visitor Pattern)

23. 状态模式(State Pattern)


http://designpatternsphp.readthedocs.io/zh_CN/latest/README.html

分享到:
评论

相关推荐

    面向对象设计模式设计原则

    面向对象设计模式设计原则 自己下了看吧,,面向对象程序设计时候的 几个基本原则了

    C#设计模式-吕震宇

    本资料来源于吕震宇博客,欢迎访问 ...经过整理,方便大家阅读。内容包括: 设计模式(22)-Strategy Pattern 设计模式(21)-Template Method Pattern ...C#设计模式(1) - 面向对象基本概念复习

    Java设计模式-面向对象七大设计原则

    例如:随着计算机的不断发展,程序学习这门技术也越来越重要,很多人都开启了...面向对象设计原则一共有七个:开闭原则、里氏替换原则、依赖倒转原则、单一职责原则、接口隔离原则、组合/聚合复用原则、迪米特法则。

    Java面向对象程序设计杨晓燕面向对象基本原则和模式.pptx

    第1页/共30页 Java面向对象程序设计杨晓燕面向对象基本原则和模式全文共30页,当前为第1页。 类的UML图 UML类图显示类的三个组成部分,第一是Java中定义的类名,第二个是该类的属性,第三个是该类提供的方法。 第一...

    软件设计模式-java.pdf

    从面向对象程序设计的7个基本原则出发,用浅显易懂、可视化的UML建模语言逐一介绍GoF的23种经典设计模式。全书共9章,内容包括设计模式基础、创建型设计模式(共5种)、结构型设计模式(共7种)、行为型设计模式(共...

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

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

    面向对象设计模式的基本概念和原则代码

    面向对象设计模式的基本概念和原则,dome例子

    面向对象软件架构设计

    面向对象设计的基本原则 132 第三单元:用UML辅助系统分析与设计 177 UML简介及常见疑难问题辨析 178 借鉴RUP的UML建模与分析 213 第四单元:设计模式与软件设计思想 267 设计模式 268 常用的软件架构风格及适用情况...

    ASP.NET设计模式-杨明军译(源码)

    那些以前已经体验过设计模式的读者可能希望跳过本书的第ⅰ部分,这部分介绍了gof提出的设计模式以及其他常见设计原则,包括s.o.l.i.d原则和martinfowler的企业设计模式。所有的代码示例均采用c#语言编写,但这些概念...

    Java面向对象程序设计杨晓燕面向对象基本原则和模式PPT教案学习.pptx

    Java面向对象程序设计杨晓燕面向对象基本原则和模式PPT教案学习.pptx

    软件体系结构与设计模式第五章面向对象的几个基本原则.ppt

    软件体系结构与设计模式第五章面向对象的几个基本原则.ppt

    研磨设计模式-part2

    完整清晰版,完美书签. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、...附录A常见面向对象设计原则 附录BUML简介 参考文献

    研磨设计模式-part4

    完整清晰版,完美书签. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、...附录A常见面向对象设计原则 附录BUML简介 参考文献

    研磨设计模式-part3

    完整清晰版,完美书签. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、...附录A常见面向对象设计原则 附录BUML简介 参考文献

    敏捷软件开发:原则、模式与实践(C#版)中文.pdf

    Martin在《敏捷软件开发:原则、模式与实践(C#版)》中深入而生动地使用真实案例讲解了面向对象设计的基本原则、重要的设计模式、UML和敏捷方法。 《敏捷软件开发:原则、模式与实践(C#版)》Java版曾荣获2003年第13...

    敏捷软件开发:原则、模式与实践(C#版)英文.pdf

    Martin在《敏捷软件开发:原则、模式与实践(C#版·修订版)》中深入而生动地使用真实案例讲解了面向对象设计的基本原则、重要的设计模式、UML和敏捷方法。 《敏捷软件开发:原则、模式与实践(C#版·修订版)》Java版...

    设计模式解析-英文

    以及面向对象分析和设计在当代软件开发中的重要性,随后使用易懂的示例代码阐明了12个最常用的模式,包括它们的基础概念、优点、权衡取舍、实现技术以及需要避免的缺陷,使读者能够理解模式背后的基本原则和动机,...

    23种设计模式的范例详解

    关于23中设计模式的详解范例,以及面向对象编程的基本原则!

    Java零基础-面向对象和面向过程.md

    内容概要: 本文档详细介绍了Java编程中的面向对象编程(OOP)和面向过程编程(Procedural Programming)两种主要编程范式...推荐深入学习和实践面向对象编程的概念、原则和设计模式,以提升代码的可重用性和可维护性。

Global site tag (gtag.js) - Google Analytics