<b>Java底子:面向对象编程的几个原则</b>[Java编程]
本文“<b>Java底子:面向对象编程的几个原则</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1. 开闭原则(the Open Closed Principle OCP)
一个模块在扩大性方面应当是开放的而在更改性方面应当是封闭的.因此在举行面向对象计划时要尽大概考虑接口封装机制、抽象机制和多态技术.该原则一样合适于非面向对象计划的办法,是软件工程计划办法的重要原则之一.我们以收音机的例子为例,报告面向对象的开闭原则.我们收听节目时需求翻开收音机电源,对准电台频率和举行音量疗养.但是关于差别的收音机,实现这三个步骤的细节常常有所差别.比方自动收缩电台的收音机和按钮式收缩在操作细节上并不相同.因此,我们不太大概针对每种差别范例的收音机通过一个收音机类来实现(通太重载)这些差别的操作方法.但是我们可以定义一个收音机接口,供应开机、关机、增添频率、降低频率、增添音量、降低音量六个抽象办法.差别的收音机担当并实现这六个抽象办法.这样新增收音机范例不会影响别的原有的收音机范例,收音机范例扩大极其便利.此外,已存在的收音机范例在改正其操作办法时也不会影响到别的范例的收音机.
2. 替换原则 (the Liskov Substitution Principle LSP)
子类该当可以替换父类并呈目前父类可以呈现的任何地方.这个原则是Liskov于1987年提出的计划原则.它一样可以从Bertrand Meyer 的DBC (Design by Contract) 的概念推出.
我们以学生为例,夜校生为学生的子类,因此在任何学生可以呈现的地方,夜校生都可呈现.这个例子有些牵强,一个可以反映这个原则的例子时圆和椭圆,圆是椭圆的一个特别子类.因此任何呈现椭圆的地方,圆都可以呈现.但反过来便大概行不通.
应用替换原则时,我们尽大概把类B计划为抽象类大概接口,让C类担当类B(接口B)并实现操作A和操作B,运行时,类C实例替换B,这样我们便可举行新类的扩大(担当类B或接口B),同时无须对类A举行改正.
3. 依靠原则 (the Dependency Inversion Principle DIP)
在举行业务计划时,与特定业务有关的依靠关系应当尽大概依靠接口和抽象类,而不是依靠于具体类.具体类只负责相关业务的实现,改正具体类不影响与特定业务有关的依靠关系.
在构造化计划中,我们可以看到底层的模块是对高层抽象模块的实现(高层抽象模块通过调用底层模块),这阐明,抽象的模块要依靠具体实现相关的模块,底层模块的具体实现发生变更时将会严重影响高层抽象的模块,明显这是构造化办法的一个"硬伤".
面向对象办法的依靠关系刚好相反,具体实现类依靠于抽象类和接口.
为此,我们在举行业务计划时,应尽大概在接口或抽象类中定义业务办法的原型,并通过具体的实现类(子类)来实现该业务办法,业务办法内容的改正将不会影响到运行时业务办法的调用.
4. 接口别离原则(the Interface Segregation Principle ISP)
采取多个与特定客户类有关的接口比采取一个通用的涵盖多个业务办法的接口要好.
ISP原则是别的一个支持诸如COM等组件化的使能技术.贫乏ISP,组件、类的可用性和移植性将大打折扣.
这个原则的本质相当简单.假如你拥有一个针对多个客户的类,为每一个客户成立特定业务接口,然后使该客户类担当多个特定业务接口将比直接加载客户所需全部办法有效.
以上四个原则是面向对象中常常用到的原则.此外,除上述四原则外,还有一些常用的经验诸如类构造层次以三到四层为好、类的职责明确化(一个类对应一个具体职责)等可供我们在举行面向对象计划参考.但就上面的几个原则看来,我们看到这些类在多少分布上显现树型拓扑的关系,这是一种杰出、开放式的线性关系、具有较低的计划复杂度.普通说来,在软件计划中我们该当尽大概避免呈现带有闭包、循环的计划关系,它们反映的是较大的耦合度和计划复杂化.
以上是“<b>Java底子:面向对象编程的几个原则</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |