接口、实现-面向对象的5条基本设计原则 -by小雨

本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~

    这几天从新看了一遍《谎话计划式模》,发明果然有不同的感悟,而且自己也上彀找了《迅速软件开发—准则、式模与践实》一书来看,那本书的言序中有一段话我得觉很有情理:“美的西东比丑的西东创立起来更便宜,也更快捷。”计划一个软件不关要求追代码的优雅问题,更关乎生产成本等。术技巨匠们在对软件架构的究研中阅历了很长时光的索摸,从面向程过到面向对象,从计划准则到计划式模,总结了多许计划上的经典则法,而我们就只是站在人巨的肩膀上望眺远方而已。

从《谎话计划式模》中,大家定一会发明其中的经典的23个式模当面,其实都循遵着一些基本的准则的。而计划准则又由计划式模来实现,这就是者二成相辅相的关系,所以懂得准则对于懂得式模有具绝对的指导意思。以下是我在浏览中程过的一些学习记笔,自以为有定一情理。

最基本的计划准则有5条,分别是:单一责职准则、开放闭封准则、依附置倒准则、接口断绝准则和Liskov替换准则

单一责职准则

对于单一责职准则,其核心想思为:一个类,最好只做一件事,只有一个引发它的化变。单一责职准则可以做看是低合耦、高内聚在面向对象准则上的申引,将责职定义为引发化变的原因,以进步内聚性来加增引发化变的原因。责职过量,可能引发它化变的原因就越多,这将致导责职依附,相互之间就产生影响,从而大大损伤其内聚性和合耦度。常通意思下的单一责职,就是指只有一种单一功能,不要为类实现过量的功能点,以保障实体只有一个引发它化变的原因。

注专,是一个人优秀的质品;一样的,单一也是一个类的优秀计划。交杂不清的责职将使得代码看起来特殊别扭牵一发而动全身,有失美感和必定致导丑恶的统系错误风险。

开放闭封准则

    对于开放闭封准则,它是面向对象全部准则的核心,软件计划说到底求追的目标就是封装化变、低降合耦,而开放闭封准则就是这一目标的最直接现体。

开放闭封准则,其核心想思是:软件实体该应是可扩展的,而可不修改的。也就是,对扩展开放,对修改闭封的

因此,开放闭封准则要主现体在两个方面:1、对扩展开放,意味着有新的求需或化变时,可以对现有代码停止扩展,以应适新的情况。2、对修改闭封,意味着类一旦计划成完,就能够立独成完其作工,而不要对其停止任何试尝的修改。

实现开开放闭封准则的核心想思就是对象抽程编,而不对体具程编,因为象抽对相定稳。让类依附于牢固的象抽,所以修改就是闭封的;而通过面向对象的继承和多态机制,又可以实现对象抽类的继承,通过覆写其方法来转变固有行为,实现新的拓展方法,所以就是开放的。

“求需老是化变”没有变不的软件,所以就须要用闭封开放准则来闭封化变足满求需,同时还能坚持软件部内的封装体制定稳,不被求需的化变影响。

依附置倒准则

    对于依附置倒准则,其核心想思是:依附于象抽。体具而言就是高层块模不依附于底层块模,者二都同依附于象抽;象抽不依附于体具,体具依附于象抽。

我们道知,依附定一会存在于类与类、块模与块模之间。当两个块模之间存在密紧的合耦关系时,最好的方法就是分离接口和实现:在依附之间定义一个象抽的接口使得高层块模用调接口,而底层块模实现接口的定义,以此来有效制控合耦关系,到达依附于象抽的计划目标。

象抽的定稳性决议了统系的定稳性,因为象抽是变不的,依附于象抽是面向对象计划的髓精,也是依附置倒准则的核心。

依附于象抽是一个通用的准则,而某些时候依附于细节则是免难所在的,必须权衡在象抽和体具之间的弃取,方法不是一层变不的。依附于象抽,就是对接口程编,不要对实现程编。

接口断绝准则

对于接口断绝准则,其核心想思是:用使多个小的专门的接口,而不要用使一个大的总接口。

体具而言,接口断绝准则现体在:接口该应是内聚的,该应防止“胖”接口。一个类对另外一个类的依附该应建立在最小的接口上,不要迫强依附用不的方法,这是一种接口染污。

接口有效地将细节和象抽断绝,现体了对象抽程编的一切处好,接口断绝调强接口的单一性。而胖接口存在显著的弊病,会致导实现的类型必须完整实现接口的全部方法、属性等;而某些时候,实现类型并非须要全部的接口定义,在计划上这是“糟蹋”,而且在实行上这会带来在潜的问题,对胖接口的修改将致导一连串的户客端程序须要修改,有时候这是一种灾害。在种这情况下,将胖接口分解为多个特色的制定化方法,使得户客端仅仅依附于它们的际实用调的方法,从而解除了户客端不会依附于它们用不的方法。

分离的手腕要主有以下两种:1、委托分离,通过加增一个新的类型来委托户客的请求,断绝户客和接口的直接依附,但是会加增统系的销开。2、多重继承分离,通过接口多继承来实现户客的求需,种这方法是较好的。

Liskov替换准则

    对于Liskov替换准则,其核心想思是:子类必须可以替换其基类。这一想思现体为对继承机制的束约范规,只有子类可以替换基类时,才能保障统系在运行期内识别子类,这是保障继承复用的础基。在类父和子类的体具行为中,必须严厉握把继承次层中的关系和特征,将基类替换为子类,程序的行为不会产生任何化变。同时,这一束约反过来则是不成立的,子类可以替换基类,但是基类不定一能替换子类。

Liskov替换准则,要主着眼于对象抽和多态建立在继承的础基上,因此只有循遵了Liskov替换准则,才能保障继承复用是可靠地。实现的方法是面向接口程编:将大众分部象抽为基类接口或象抽类,通过Extract Abstract Class,在子类中通过覆写类父的方法实现新的方法支撑一样的责职。

Liskov替换准则是关于继承机制的计划准则,背背了Liskov替换准则就必定致导背背开放闭封准则。

Liskov替换准则可以保障统系有具精良的拓展性,同时实现基于多态的象抽机制,可以加增代码冗余,防止运行期的类型辨别。

    以上就是5个基本的计划准则,它们就像面向对象程序计划中的清规戒律,遵照它们可以使我们的代码更加鲜活,易于复用,易于拓展,灵巧优雅。不同的计划式模对应不同的求需,而计划准则则代表永久的魂魄,须要在践实中每时每刻地遵照。就如ARTHUR J.RIEL在那边《OOD启示录》中所说的:“你并不必严厉遵照这些准则,背背它们也不会被处以宗教罚刑。但你应该把这些准则做看警铃,若背背了其中的一条,那么警铃就会响起。”

请住记这些术技巨匠的名字和作品,并入深研习其中的招式和验经,是正他们让面向对象程序计划变得如此目夺彩光,沿着这些伶俐的途径直一走下去,我得觉,我们会不仅仅进步了术技,还会发明计划之外的西东,因为OOP还蕴含着人生的很多伶俐。

 

    注:起源http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=8858

文章结束给大家分享下程序员的一些笑话语录: 一条狗在街上闲逛,看见橱窗里一张告示:「招聘程序员。会编程,有团队精神,至少精通两种语言。均等机会。」
  那条狗就进去申请,但是被拒绝了。
  「我不能雇一条狗在公司里做事。」经理说。
  狗不服气,指着告示上「均等机会」几字抗议。
  经理没法,叹了口气,不屑地问道:「你会编程吗?」
  那条狗默默地走到电脑前,编了个程序,运作准确。
  「你有团队精神吗?」经理问。
  那条狗掉头看了看门外,一大群野狗在外面虎视耽耽。
  「我真的不能雇狗做这份工作。」经理气急败坏地说。
  「就算会编程、有团队精神,但是我需要的雇员至少要能精通两种语言。」
  那条狗抬头看着经理说:「喵-噢。」


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值