面向对象设计的6个设计原则最早谁提出的 面向对象设计的6个设计原则最早谁提出的

作者&投稿:呼柱 (若有异议请与网页底部的电邮联系)

1967年挪威计算中心的Kisten Nygaard和Ole Johan Dahl开发了Simula67语言,它提供了比子程序更高一级的抽象和封装,引入了数据抽象和类的概念,它被认为是第一个面向对象语言。

20世纪70年代初,Palo Alto研究中心的Alan Kay所在的研究小组开发出Smalltalk语言,之后又开发出Smalltalk-80,Smalltalk-80被认为是最纯正的面向对象语言,它对后来出现的面向对象语言,如Object-C,C++,Self,Eiffl都产生了深远的影响。

随着面向对象语言的出现,面向对象程序设计也就应运而生且得到迅速发展。

之后,面向对象不断向其他阶段渗透,1980年Grady Booch提出了面向对象设计的概念,之后面向对象分析开始。

1985年,第一个商用面向对象数据库问世。1990年以来,面向对象分析、测试、度量和管理等研究都得到长足发展。

面向对象设计的6个设计原则:

什单一职责:

一个类中的属性和方法要有很高的相关性,不然就拆开;如果一个类很庞大,则需要进一步细分职能,把相关性更高的归到一块。

开闭原则:

对扩展开放,对修改关闭。

极端要求就是:程序完成后,除非是修改错误,不然不能修改代码,只能扩展代码。

比如一个功能,有多种实现方法,即有多个类型,不要用if-else这种分支在一个类中去指定其类型;而是对接口编程,通过继承,把实现透明化,每增加一个类型就增加一个类。

想这么一个问题,每增加一个类型的时候,是修改原类添加一个else分支好还是实现一个新的与老代码无关的新类好?

下面这种实现就是对修改开放的结果,每次要增加一个类型,都得修改原有代码,导致原有系统可能被引入bug,需要被重新测试:

class Demo {        public static final int TYPE_A = 1;        public static final int TYPE_B = 2;        public static final int TYPE_C = 3;        public Demo(int type) {            if(type == 1) {                //act as TYPE_A            }            if(type == 2) {                //act as TYPE_B            }            if(type ==3) {                //act as TYPE_C            }
}
}

下面这种情况就是对修改关闭,通过对接口变成对扩张开放,新增一个类型不用修改原有代码:

interface Type {

}    class Demo2 {        private Type mType = null;        public Demo2() {
}        public void setType(Type type) {
mType = type;//act like what you assigned.        }
}    class TypeA implements Type {

}    

里氏替换原则:

开闭原则就是通过里氏替换来实现的,即对接口编程,建立抽象,具体的实现在运行时替换掉抽象,所有引用基类的地方必须能透明地使用其子类对象。

依赖导致原则:

就是调用者(客户代码)不依赖于被调用者(实现代码)的实现细节,而是依赖其抽象。

调用者不依赖被调用者的具体实现,而是依赖被调用者的抽象,这样被调用者后续可以被无感替换掉;

接口隔离原则:

接口定义要最小化,就是接口只专注一个领域,不要大而全,要小而细。

比如Closeable接口只管close,不管其实现类的其他事情,Comparable接口只管比较,不管其他的。

迪米特原则(least Knowledge Principle):

就是类与类的少了解,即类只需要知道依赖类必须知道的方法,其余的细节不要去了解;类的“朋友”要少,即类尽可能只跟必须要打交道的有依赖,不要依赖一大堆。

各大中小企业寻找软件定制开发及软件产品,网站建设等服务,就要找类似优客美这种拥有一流的技术团队与专业的服务人员,具备很强技术能力的正规软件公司。



Booch最先描述了面向对象的软件开发方法的基础问题。

面向对象设计的六大基本原则:
1)开闭原则
2)里氏代换原则
3)依赖倒转原则
4)接口隔离原则
5)迪米特法则
6)合成/聚合复用原则

设计模式是6大原则还是7大原则~

设计模式应该是六大原则吧

1、开闭原则(Open Close Principle)

开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

2、里氏代换原则(Liskov Substitution Principle)

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。
里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。
LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里
氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现
抽象化的具体步骤的规范。—— From Baidu 百科

3、依赖倒转原则(Dependence Inversion Principle)

这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。

4、接口隔离原则(Interface Segregation Principle)

这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。

5、迪米特法则(最少知道原则)(Demeter Principle)

为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

6、合成复用原则(Composite Reuse Principle)

原则是尽量使用合成/聚合的方式,而不是使用继承。

Booch最先描述了面向对象的软件开发方法的基础问题。

面向对象设计的六大基本原则:
1)开闭原则
2)里氏代换原则
3)依赖倒转原则
4)接口隔离原则
5)迪米特法则
6)合成/聚合复用原则

唐·诺曼的七个基本设计原则
答:在第一部分,我们分析了唐·诺曼的畅销书《日常的设计》中的七个重要问题。为了帮助确定这七个问题的答案,诺曼设计了一份关于七个基本设计原则的清单。每一个原则都可以作为一种特殊的设计策略来应用,使产品被高效且有效地使用。每当我们处理日常事务如电视遥控器,或网站及应用程序之类的产品时,我们...

北大青鸟java培训:程序员需要了解的10个面向对象设计?
答:这些书对编写更好的代码有很大帮助,充分利用各种面向对象和SOLID的设计模式。虽然学习设计模式(原则)最好的方法是现实中的例子和理解违反设计原则带来的不便,本文的宗旨是向那些没有接触过或正处于学习阶段的程序员介绍面向对象设计原则。DRY_Don’trepeatyourself我们第一个面向对象设计原则是:DRY,从名称...

面向对象设计原则 面向对象设计原则有哪些
答:1、单一职责原则:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。单一职责原则是实现高内聚、低耦合的指导方针,是最简单却最难运用的原则,需要设计人员发现类的不同职责并将其分离。2、开闭原则:软件实体应当对扩展开放,对修改关闭。指软件实体应尽量在不修改原有代码的情况下...

面向对象的五大原则?
答:面向对象的五大原则:1、模块化 面向对象开发方法很自然地支持了把系统分解成模块的设计原则:对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。分解系统为一组具有高内聚和松耦合的模块是模块化的属性。2、抽象 面向对象方法不仅支持过程抽象,而且支持数据抽象。3、信息...

艺术设计的六大原则是什么?请分别举例阐述
答:1 功能原则 就是指设计时要考虑设计品应当具有的目的和效用 符合目的性的原则 2 经济原则 就是现代设计时要考虑经济核算问题 考虑原材料费用、成产成本、产品价格、运输、贮藏、展示、推销、等费用的便宜合理 在一般情况下 力求以最小的成本获得最适用、最优质、最美观的设计。 3 科技原则 指设计时要考虑现代材料...

什么是面向对象技术
答:(1)面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来;面向对象程序设计方法将数据和对数据的操作封装在一起,作为一个整体来处理。 函数与数据是否分离 (2)面向过程程序设计方法以功能为中心来设计功能模块,难于维护;而面向对象程序设计方法以数据为中心来描述系统,数据相对...

面向对象基础设计原则:6.接口隔离原则
答:面向对象设计的精髓:接口隔离原则详解 在探索面向对象设计原则的旅途中,接口的出现无疑为代码的灵活性和可维护性带来了显著提升。然而,如何巧妙运用接口隔离原则(Interface Segregation Principle,ISP),则是我们不容忽视的关键环节。ISP的核心理念是,让每个用户只承担他们真正需要的功能,避免无谓的依赖...

面向对象的设计模式有什么原则?
答:在运用面向对象的思想进行软件设计时,需要遵循的原则一共有7个,他们是:1. 单一职责原则(Single Responsibility Principle)每一个类应该专注于做一件事情。2. 里氏替换原则(Liskov Substitution Principle)超类存在的地方,子类是可以替换的。3. 依赖倒置原则(Dependence Inversion Principle)实现尽量依赖...

《设计学概论》笔记-第一章第一节(重点知识补充)
答:他强调设计的服务对象为大众,希望振兴工艺美术的传统,一方面否定机械化、工业化风格,另一方面否定装饰过度的维多利亚式风格,认为哥德式、中世纪的设计才是诚实的设计。 他反复强调设计的两个基本原则: (1)产品设计和建筑设计是为千千万万的人服务的,而不是为少数人的活动;(2)设计工作必须是集体的活动,而不是个体...

《设计心理学1》唐纳德·诺曼
答:《设计心理学》这套书最早出版于1988年,是设计学的经典入门书籍。这本书会从心理学的角度入手,给你讲讲设计的门道。 核心内容 一、什么是好设计,交互设计的基本原则。二、人为差错往往来源于糟糕的设计。三、“以人为本”的设计思维。 一、什么是好设计 一个好的设计,要兼顾可视性和易通性。所谓可视性,就是...