自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談設(shè)計(jì)模式五大原則

開發(fā) 項(xiàng)目管理
我們將介紹設(shè)計(jì)模式的五大原則,比如單一職責(zé)、開閉原則、替換原則、依賴倒置原則等等。

  1、單一職責(zé)

  不論是在設(shè)計(jì)類,接口還是方法,單一職責(zé)都會(huì)處處體現(xiàn),單一職責(zé)的定義:我們把職責(zé)定義為系統(tǒng)變化的原因。所有在定義類,接口,方法的時(shí)候。定義完以后再去想一想是不能多于一個(gè)的動(dòng)機(jī)去改變這個(gè)類,接口,方法。如果答案是肯定的,說明定義的類,接口,方法則多于一個(gè)職責(zé)。故違背單一職責(zé),遇到這種情況應(yīng)該重新細(xì)分職責(zé),直到不會(huì)出現(xiàn)多種職責(zé)的類,接口方法為止(發(fā)現(xiàn)職責(zé),并把那些職責(zé)相互分離)。單一職責(zé)的為最簡(jiǎn)單的五種原則之一。在軟件設(shè)計(jì)的過程中處處體現(xiàn)。無處不在。

  2、開閉原則

  開閉原則是指類、模塊、方法是可以擴(kuò)展的,但不可以修改。開即對(duì)擴(kuò)張開放,閉即對(duì)修改關(guān)閉。開閉原則的應(yīng)用體現(xiàn)在,開發(fā)人員應(yīng)該僅僅對(duì)程序中頻繁出現(xiàn)變化的地方進(jìn)行抽象(封裝變化點(diǎn))。對(duì)變化點(diǎn)的封裝即對(duì)變化的修改關(guān)閉。對(duì)于變化的不確定性,可隨時(shí)擴(kuò)展。即 繼承的使用。抽象類的運(yùn)用。

  3、替換原則(Is-A)

  替換原則即是總是保證子類可以替換它的基類。

  替換原則的實(shí)現(xiàn)。對(duì)于一組具有類似屬性,方法,變量的類。我們可以提取公共屬性,方法,變量做為一個(gè)基類(抽象類或者類),使這一組類繼承基類,重寫虛方法?,F(xiàn)在這些繼承的類和基類的關(guān)系符合Is-A。如基類為鳥,則繼承類可以為麻雀,燕子。我們可以說麻雀Is-A鳥,燕子Is-A鳥。

  在項(xiàng)目中所有使用子類的地方都可用父類替換,但在調(diào)用方法的時(shí)候 ,即呈現(xiàn)面向?qū)ο缶幊痰亩鄳B(tài)性。即替換原則,非常重要的原則,也是比較對(duì)難的原則。

  4、依賴倒置原則

  a、高層模塊不應(yīng)該依賴于低層模塊。二者都應(yīng)該依賴于抽象

  b、抽象不應(yīng)該依賴于細(xì)節(jié)。細(xì)節(jié)應(yīng)該依賴于抽象。

  在面向過程的開發(fā)語言中分析和設(shè)計(jì),總是創(chuàng)建一些高層模塊去調(diào)用低層模塊、策略依賴于細(xì)節(jié)的軟件結(jié)構(gòu)。實(shí)際上這種方法的目的就是要定義子程序?qū)哟谓Y(jié)構(gòu),該結(jié)構(gòu) 描述了高層模塊怎樣調(diào)用低層模塊。而設(shè)計(jì)良好的面向?qū)ο蟮某绦?,正?ldquo;倒置”了這種依賴關(guān)系。高層模塊不再依賴于低層模塊,從而低層模塊的修改不會(huì)影響到高層模塊,并且高層模塊也是能非常容易的被重用,高層模塊和低層模塊都影響都依賴于抽象。這樣也非常符合強(qiáng)內(nèi)聚松耦合的編程思想。故該原則也是框架設(shè)計(jì)的核心原則。

  使用傳統(tǒng)的過程化程序設(shè)計(jì)所創(chuàng)建出來的依賴關(guān)系結(jié)構(gòu),策略是依賴于細(xì)節(jié)的,這是糟糕的,因?yàn)檫@樣會(huì)使策略受到細(xì)節(jié)改變的影響,面向?qū)ο蟮某绦蛟O(shè)計(jì)倒置了依賴關(guān)系結(jié)構(gòu),全程細(xì)節(jié)和策略都依賴抽象,并且常常是客戶程序擁有服務(wù)接口。

  事實(shí)上,這種依賴關(guān)系的倒置正是好的面向?qū)ο笤O(shè)計(jì) 的標(biāo)志所在,使用何種語言來編寫程序是無關(guān)緊要的。如果程序的依賴關(guān)系是倒置的,它就是面向?qū)ο蟮脑O(shè)計(jì)。如果程序的依賴關(guān)系不是倒置的,它就是過程化的設(shè)計(jì)。

  依賴倒置原則是實(shí)現(xiàn)許多面向?qū)ο蠹夹g(shù)所宣稱的好處的基本低層機(jī)制。它的正確應(yīng)用對(duì)于創(chuàng)建可重用的框架來說是必需的。同時(shí)它對(duì)于構(gòu)建在變化面前富有彈性的代碼也是非常重要的,由于抽象和細(xì)節(jié)彼此隔離,所以代碼也非常容易維護(hù)。

  5、接口隔離原則

  應(yīng)該說該原則是處理現(xiàn)有“胖”接口所存在的缺點(diǎn)。如果類的接口不是內(nèi)聚的,就表示該類具有“胖”接口。換句話說“胖”接口可以分解成多組方法。每一組方法都服務(wù)于一組不同的客戶程序。這樣,量引客戶程序可以使用一組成員函數(shù),而其他客戶程序可以使用其他組的成員函數(shù)。

  接口隔離的方法有兩種(分享客戶就是分離接口):

  1、使用委托(此委托非.net委托[delegate])分離接口

  使用委托即,創(chuàng)建一個(gè)委托類,用此類去實(shí)現(xiàn)分離后的其它接口中的方法。

  2、使用多重繼承分離接口、

  此方法,即將現(xiàn)有“胖”接口分成供不同客戶程序調(diào)用的兩個(gè)或多個(gè)接口,而需要實(shí)現(xiàn)多個(gè)接口的客戶程序,則使用多重繼承來實(shí)現(xiàn)。

  這兩種方法是實(shí)現(xiàn)接口隔離的全部方法,其中第二種方法使用較普遍,也比較簡(jiǎn)單。而***種方法使用起來相對(duì)比較復(fù)雜,而且在使用委托的過程中也會(huì)產(chǎn)生重復(fù)的對(duì)象,則占用運(yùn)行時(shí)間和內(nèi)存開銷。有的時(shí)候第二種方法是必須的,***種方法是不能使用的。如:利用委托對(duì)象所做的轉(zhuǎn)換是必需的,或者不同的時(shí)候會(huì)需要不同的轉(zhuǎn)換。

原文鏈接:http://www.cnblogs.com/yuqilin/archive/2011/09/04/2162961.html

【編輯推薦】

  1. 新手軟件項(xiàng)目經(jīng)理該如何入門
  2. 項(xiàng)目經(jīng)理的力量應(yīng)該從哪里來?
  3. 當(dāng)你從程序員變?yōu)轫?xiàng)目經(jīng)理
  4. 軟件測(cè)試項(xiàng)目為什么會(huì)失敗
  5. 項(xiàng)目管理之CVS與SVN日常使用總結(jié)
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2012-03-15 11:15:13

Java設(shè)計(jì)模式

2011-07-19 18:13:15

高效數(shù)據(jù)庫(kù)

2020-09-18 11:25:43

智能

2012-03-05 13:58:34

設(shè)計(jì)模式里氏置換

2012-03-07 10:40:19

Java設(shè)計(jì)模式

2012-03-07 11:03:13

Java設(shè)計(jì)模式

2011-06-29 15:44:19

SEO

2012-03-08 10:57:00

Java設(shè)計(jì)模式

2022-02-28 08:00:00

軟件開發(fā)敏捷方法技術(shù)

2015-01-21 16:09:12

物聯(lián)網(wǎng)數(shù)據(jù)分析治理

2012-03-12 16:10:26

Java設(shè)計(jì)模式

2022-05-09 14:33:20

代碼設(shè)計(jì)設(shè)計(jì)模式

2019-09-16 23:03:12

軟件設(shè)計(jì)技術(shù)

2015-04-09 10:19:10

2014-12-04 18:12:32

百會(huì)CRM

2015-09-23 17:12:18

API設(shè)計(jì)原則

2015-09-24 08:52:53

API設(shè)計(jì)原則

2021-07-29 14:42:55

設(shè)計(jì)模式Java

2022-03-31 10:24:23

人工智能技術(shù)機(jī)器人

2010-09-09 13:54:06

DIV CSS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)