oop五大设计原则

一:单一职责原则
单一职责有2个含义,一个是避免相同的职责分散到不同的类中,另一个是避免一个类承担太多职责。减少类的耦合,提高类的复用性。

二:接口隔离原则
表明客户端不应该被强迫实现一些他们不会使用的接口,应该把胖接口中额方法分组,然后用多个接口代替它,每个接口服务于一个子模块。简单说,就是使用多个专门的接口比使用单个接口好很多。
该原则观点如下:
1,一个类对另外一个类的依赖性应当是建立在最小的接口上
2,客户端程序不应该依赖它不需要的接口方法。

三:开放-封闭原则
open模块的行为必须是开放的、支持扩展的,而不是僵化的。
closed在对模块的功能进行扩展时,不应该影响或大规模影响已有的程序模块。一句话概括:一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。
核心思想就是对抽象编程,而不对具体编程。

四:替换原则
子类型必须能够替换掉他们的父类型、并出现在父类能够出现的任何地方。
主要针对继承的设计原则
1,父类的方法都要在子类中实现或者重写,并且派生类只实现其抽象类中生命的方法,而不应当给出多余的,方法定义或实现。
2,在客户端程序中只应该使用父类对象而不应当直接使用子类对象,这样可以实现运行期间绑定。

五:依赖倒置原则
上层模块不应该依赖于下层模块,他们共同依赖于一个抽象(父类不能依赖子类,他们都要依赖抽象类)
抽象不能依赖于具体,具体应该要依赖于抽象。

时间: 2024-11-05 12:30:07

oop五大设计原则的相关文章

面向对象五大设计原则

以前一直认为程序中的类有使用到封装继承多态就是面向对象设计,其实不然 封装,继承,多态只是面向对象的三大特性,但是在设计程序的时候并不是说类的结构使用到了(或是体现出了)这三个特性就是面向对象, 其实真正的面向对象设计是要符合下面的五大原则, 面向对象的五大基本原则单一职责原则(SRP)开放封闭原则(OCP) 里氏替换原则(LSP) 依赖倒置原则(DIP) 接口隔离原则(ISP) 单一职责原则(SRP) ?      一个类应该有一个职责,仅有一个引起它变化的原因(最简单,最容易理解却最不容易做

五大设计原则------接口隔离原则

在讲接口隔离原则之前,先明确一下接口,这里据说的接口分为两种: 1. 实例接口(Object Interface),就是声明一个类,然后用 new 关键字产生一个实例,它是对一个类型事物的描述,这是一种接口. 2. 类接口(Classs Interface) ,就是指用 Interface 关键字定义的接口. 接口隔离包含两层意思: 1.客户端不应该依赖于它不需要的接口 2.类间的依赖关系应该建立在最小的接口上. 针对1就是指客户端应该依赖于它需要的接口,通俗地说就是: 客户端需要什么接口就提供

五大设计原则之(三)--------开闭原则

开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段. 开闭原则的定义: 一个软件实体如类,模块和函数应该对扩展开放,对修改关闭. 遵循开闭原则设计出的模块具有两个主要特征: (1)对于扩展是开放的(Open for extension).这意味着模块的行为是可以扩展的.当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为.也就是说,我们可以改变模块的功能. (2)对于修改是关闭的(Closed

五大设计原则之(一)---迪米特法则

迪米特法则也称最少知识原则,一个对象应该对其它对象有最少的了解.通俗也说:一个类应该对自己需要耦合或调用的类知道得最少. 在类方法的设计中可以坚持这样的一个原则: 如果一个方法放在中,即不增加类间的关系,也对本类不产生负面影响,就放置本类中. 广义的迪米特法则:    一个模块设计的好坏的一个重要标志就是该模块在多大程度上讲自己的内部数据与实现的有关细节隐藏起来.    一个软件实体应当尽可能少的与其他实体发生相互作用.    每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密

五大设计原则之(二)---单一职责原则

单一职责原则(SRP:Single responsibility principle)又称单一功能原则,它规定一个类应该只有一个发生变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起了.一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力.这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏.而如果想要避免这种现象的发生,就要尽可能的遵守单一职责原则.此原则的核心就是解耦和增强内聚性. 单一职责的好处: 1.类的复杂性,实现什么职责都有清晰明确的定义 2.可读性

五大设计原则------依赖倒置

依赖倒置原则的定义: 高层模块不应该依赖你低层模块,两者都应该依赖其抽象.    抽象不应该依赖细节.    细节应该依赖抽象. 抽象就是指接口或抽象类,两者都是不能被直接实例化的.细节就是实现类,实现接口或继承抽象类而产生的类就是绿茸茸,其特点就是可以直接被实例化.也就是可以加上一个关键字 new 产生一个对象 更精简的定义就是” 面向接口编程“ OOD (Object Oriented Design, 面向对象设计) 的精髓之一. 采用依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低

浅谈Java五大设计原则之责任链模式

首先我们得先定义一个责任链模式: 责任链模式是一种线性执行流程,多个对象都有机会去执行同一个任务,只是在执行过程中, 由于执行的权利和范围不一样,那么当自己不能处理此任务时,就必须将这个任务抛给下一个对象, 一次类推,就形成了一个执行链. 典型例子就是Tomcat中的过滤器,当配置了多个过滤器时,就会形成一条过滤链,客户端发起 的请求会经过这条过滤链上的每一个过滤器,最终只有一个过滤器去处理这个请求. 纯与不纯的责任链: 1.纯的责任链是在整条链中,只有一个对象可以处理这个任务.不会处理完一半,

[转载] 一些软件设计原则

转载地址:http://blog.jobbole.com/685/ 下面这些原则,不单单只是软件开发,可以推广到其它生产活动中,甚至我们的生活中. Don’t Repeat Yourself(DRY) DRY是一个最简单的法则,也是最容易被理解的.但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易 的事).它意味着,当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码 让他们以一些

一些软件设计原则【转载】

本文一定要转,总结得非常好, 设计必读. 转自陈皓老师的 <一些软件设计的原则>,根据自己的理解调整了下顺序,少部分字句做了修改. 一个好的程序员通常由其操作技能.知识水平,经验层力和能力四个方面组成.在这里想和大家说说设计中的一些原则,我认为这些东西属于长期经验总结出来的知识.这些原则,每一个程序员都应该了解.但是请不要教条主义,在使用的时候还是要多多考虑实际情况.其实,下面这些原则,不单单只是软件开发,可以推广到其它生产活动中,甚至我们的生活中. 根本设计原则 根本设计原则是我认为的最最基