`
Joy.zhang
  • 浏览: 59006 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多
单一职责原则(SRP)
描述:就一个类而言,应该仅有一个引起它变化的原因。
应用:在构造对象时,将对象的不同职责分离至两个或多个类中,确保引起该类变化的原因只有一个。
带来的好处:提高内聚、降低耦合。
用通俗的话说:就是一个类只能做一件事.
在设计模式中用到的主要是:策略模式,状态模式,观察者模式.

开放-封闭原则(OCP)

描述:"对于扩展是开放的"(Open for extension)。这意味着模块的行为是可以扩展的。

当应用的需求改变时,可以对模块进行扩展,使其具有满足改变的新行为。也就是说,我们可以改变模块的功能。

"对于更改是封闭的"(Close for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。
应用:高级语言中的接口与虚拟类。
带来的好处:提高灵活性、可重用性、可维护性。
个人观点:OCP的关键是抽象,抽象的目的是创建一个固定却能够描述一组任意个可能行为的基类。而这一组可能的行为则表现为派生类。对于基类的更改是封闭的,所以它里边的方法一旦确定就不能更改(对接口里的方法进行更改将带来灾难性的后果)。
模块通过抽象基类进行引用,对派生类的扩展并不影响整个模块,所以它是开放的。遵循OCP的代价也是昂贵的,创建正确的抽象是要花费开发时间和精力的,同时抽象也增加了软件设计的复杂性。因此有效的预知变化是OCP设计的要点,这需要我们进行适当的调查,提出正确的问题,并利用我们的经验和一般常识来做出判断。正确的做法是,只对程序中频繁变化的部分做出抽象,拒绝不成熟的抽象和抽象本身一样重要。
在设计模式中用到的主要是:策略模式,观察者模式.

Liskov替换原则(LSP)
描述: 父类的方法都要在子类里实现或者重写,不允许子类出现父类所没有定义的方法.
在设计模式中用到的主要是:组合模式.

依赖倒置原则(DIP)
描述:
A .高层模块不应该依赖于低层模块。二者都应该依赖于抽象。
B .抽象不应该依赖于细节。细节应该依赖于抽象。
应用:要依赖抽象,不要依赖于具体。即针对接口编程,不要针对实现编程。
针对接口编程的意思是,应当使用接口和抽象类进行变量的类型声明、参量的类型声明,方法的返还类型声明,以及数据类型的转换等。不要针对实现编程的意思就是说,不应当使用具体类进行变量的类型声明、参量的类型声明,方法的返还类型声明,以及数据类型的转换等。
在设计模式中用到的主要是:模板模式,观察者模式.
通俗的话说:只能子类调用父,不能父类调用子类.

接口隔离原则(ISP)
描述:不要强迫客户依赖于它们不用的方法。
应用:如果客户端只需要某一些方法的话,那么就应当向客户端提供这些需要的方法,而不要提供不需要的方法。
结论:使用多个专门的接口比使用单一的接口要好。
最经典的实例:适配器中的对象适配器。

迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解, 不和陌生人说话。英文简写为: LoD.
门面模式就是迪米特法则的应用。
通俗的说:将用户不用的方法私有化,将不变的字段用final来修饰.

抽象类和接口的区别:
抽象类是一个类.
接口是一种行为,接口是类的一部分.
接口比抽象类的扩展性更好。
分享到:
评论
3 楼 抛出异常的爱 2010-11-08  
congdepeng 写道
Liskov替换原则(LSP)
描述: 父类的方法都要在子类里实现或者重写,不允许子类出现父类所没有定义的方法.
在设计模式中用到的主要是:组合模式.


"不允许子类出现父类所没有定义的方法."-------这一行怎么理解?

如果想用父类没有的方法.
需要强制向下转型.....
当然如果一开始你就不使用父类或接口就会有这样问题了....
2 楼 wumingshi 2010-11-08  
楼主关于LSP的解释是错误的。LSP的精髓是,使用父类的代码可以完全无障碍地使用子类,也即任何使用父类实例的地方,可以被替换为子类的实力,而不会引起行为的差别。

子类不能定义自己的方法的限制更是完全错误的。子类可以扩展公共接口,但是父类的使用者不知道这些接口,也就无法使用他们了。因此这些扩展只对于子类及其子类的使用者有用。

这种UI框架的设计中非常常见。
1 楼 congdepeng 2010-07-19  
Liskov替换原则(LSP)
描述: 父类的方法都要在子类里实现或者重写,不允许子类出现父类所没有定义的方法.
在设计模式中用到的主要是:组合模式.


"不允许子类出现父类所没有定义的方法."-------这一行怎么理解?

相关推荐

    系统总体设计原则汇总.doc

    以下是对各个设计原则的详细说明: 1. **系统总体设计原则**: - **统一设计原则**:这强调了在设计时需全局考虑,包括应用系统结构、数据模型、存储和扩展规划,确保一致性。 - **先进性原则**:采用成熟且先进...

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

    而对于其他模式和原则,应以类似的方式进行学习和应用,不断深入理解每个设计模式的特点和适用场景,以及设计原则的核心指导思想,最终能够在实际开发中灵活运用,编写出高质量、高内聚低耦合、易于扩展的代码。

    触摸屏界面通用设计原则.pdf

    发现了在触摸屏界面设计上存在的问题,深感触摸屏界面可用性的重要性以及在设计中人力物力投资的重复性,从而得出了为触摸屏界面提供一套通用的设计原则的必要性。   文章开篇第一章首先说明了一下研究背景...

    数据库索引设计原则.

    数据库索引设计原则 数据库索引设计原则是 Oracle 数据库管理系统中的一项重要技术,旨在提高数据库的查询效率和性能。以下是数据库索引设计原则的详细解释。 一、基本原则 数据库索引设计原则的基本原则是确保...

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

    在Android开发中,设计模式和设计原则是提升代码质量、可维护性和可扩展性的重要工具。以下是关于"Android 24种设计模式介绍与6大设计原则"的详细阐述: 一、六大设计原则 1. **单一职责原则(Single ...

    24种设计模式介绍与6大设计原则-PDF版 查阅方便

    这个PDF文档“24种设计模式介绍与6大设计原则”旨在帮助开发者理解和应用这些模式,提高代码的可维护性和可扩展性。以下是其中的主要内容: 一、设计原则 1. 单一职责原则:一个类或模块应只有一个引起其变化的原因...

    C++设计原则 完整整理 快速理解设计原则

    面向对象设计原则是软件开发中不可或缺的指导方针,它们旨在提升软件的可维护性和复用性,从而提高开发效率和质量。C++作为一门支持面向对象编程的语言,遵循这些原则可以使代码更加健壮和易于扩展。以下是7个常用的...

    EMI 设计原则及电磁兼容设计原则

    理解并遵循EMI设计原则和电磁兼容设计原则对于提升电路板的抗干扰性能至关重要。 首先,我们要明白EMI是指由于电路中电流的变化产生的电磁场对周围环境产生的影响,这可能会影响其他电子设备的正常工作。为了减少...

    面向对象设计原则.ppt

    面向对象设计原则是软件开发中至关重要的一环,它关乎到代码的可维护性、扩展性和复用性。本文将深入探讨这些原则,并结合实例来解释它们的重要性。 首先,我们需要理解面向对象不仅仅是编程语言中的概念,如封装、...

    HWS公有云架构设计原则和目标架构.pptx

    【HWS公有云架构设计原则】 华为公有云架构设计遵循一系列关键原则,旨在构建一个高效、灵活且可扩展的云服务环境。以下是这些原则的详细解释: 1. **开放API原则**:所有子系统,包括Portal/Console、BSS...

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

    通过以上三个面向对象的设计原则,我们可以构建出更加健壮、灵活且易于维护的软件系统。这些原则不仅适用于特定的语言环境,而且对于所有的面向对象编程语言都有普遍的意义。理解和掌握这些原则,对于提升软件开发的...

    PCB设计原则归纳整理

    高速PCB EMC设计的47个原则二、PCB设计原则归纳 原则1:PCB时钟频率超过5MHZ或信号上升时间小于5ns,一般需要使用多层板设计。 原因:采用多层板设计信号回路面积能够得到很好的控制。 原则2:对于多层板,关键...

    软件设计原则与实践

    在软件设计领域,设计原则是指导软件系统构建的基础法则和最佳实践,它们可以帮助开发者构建出更加灵活、可维护和可扩展的系统。在嵌入式系统开发中,这些原则同样适用,并且需要根据嵌入式环境的特殊性进行适当的...

    web界面设计原则

    ### Web界面设计原则详解 #### 引言 Web界面设计是一项综合艺术与科学的技能,旨在创造既美观又实用的在线体验。良好的Web界面不仅能够吸引用户,还能引导他们高效地完成目标。本文将深入探讨Web界面设计的核心...

    java设计 原则61条

    ### Java设计原则详解 #### 一、基本原则与实践 **原则1:避免不必要的代码重复** 根据Arthur J. Riel的观点,在设计时应当避免代码的重复。例如在第13页提到,应尽量减少相似功能模块的重写,这有助于提高代码的...

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

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

    面向对象的设计原则——类设计原则

    面向对象设计原则是软件工程领域中的重要组成部分,旨在提高软件系统的可维护性、可扩展性和灵活性。其中,类设计原则尤为关键,它们指导着开发者如何合理地构建类,以适应不断变化的需求。以下是对给定文件中提及的...

    数据采集系统设计原则与基本方法

    数据采集系统设计原则与基本方法 数据采集系统设计原则与基本方法是数据采集系统设计的基础,掌握这些原则和方法是设计高质量的数据采集系统的关键。本文将对数据采集系统设计的基本原则和方法进行详细的解释。 一...

    swift-面向对象设计的设计原则和设计模式

    设计原则和设计模式是OOD的核心概念,它们为开发者提供了指导思想和最佳实践,以创建可维护、可扩展和易于理解的代码。在Swift中,遵循这些原则和模式可以帮助我们编写出更加灵活和高效的软件。 面向对象设计的原则...

Global site tag (gtag.js) - Google Analytics