成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談設計模式五大原則

開發 項目管理
我們將介紹設計模式的五大原則,比如單一職責、開閉原則、替換原則、依賴倒置原則等等。

  1、單一職責

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

  2、開閉原則

  開閉原則是指類、模塊、方法是可以擴展的,但不可以修改。開即對擴張開放,閉即對修改關閉。開閉原則的應用體現在,開發人員應該僅僅對程序中頻繁出現變化的地方進行抽象(封裝變化點)。對變化點的封裝即對變化的修改關閉。對于變化的不確定性,可隨時擴展。即 繼承的使用。抽象類的運用。

  3、替換原則(Is-A)

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

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

  在項目中所有使用子類的地方都可用父類替換,但在調用方法的時候 ,即呈現面向對象編程的多態性。即替換原則,非常重要的原則,也是比較對難的原則。

  4、依賴倒置原則

  a、高層模塊不應該依賴于低層模塊。二者都應該依賴于抽象

  b、抽象不應該依賴于細節。細節應該依賴于抽象。

  在面向過程的開發語言中分析和設計,總是創建一些高層模塊去調用低層模塊、策略依賴于細節的軟件結構。實際上這種方法的目的就是要定義子程序層次結構,該結構 描述了高層模塊怎樣調用低層模塊。而設計良好的面向對象的程序,正好“倒置”了這種依賴關系。高層模塊不再依賴于低層模塊,從而低層模塊的修改不會影響到高層模塊,并且高層模塊也是能非常容易的被重用,高層模塊和低層模塊都影響都依賴于抽象。這樣也非常符合強內聚松耦合的編程思想。故該原則也是框架設計的核心原則。

  使用傳統的過程化程序設計所創建出來的依賴關系結構,策略是依賴于細節的,這是糟糕的,因為這樣會使策略受到細節改變的影響,面向對象的程序設計倒置了依賴關系結構,全程細節和策略都依賴抽象,并且常常是客戶程序擁有服務接口。

  事實上,這種依賴關系的倒置正是好的面向對象設計 的標志所在,使用何種語言來編寫程序是無關緊要的。如果程序的依賴關系是倒置的,它就是面向對象的設計。如果程序的依賴關系不是倒置的,它就是過程化的設計。

  依賴倒置原則是實現許多面向對象技術所宣稱的好處的基本低層機制。它的正確應用對于創建可重用的框架來說是必需的。同時它對于構建在變化面前富有彈性的代碼也是非常重要的,由于抽象和細節彼此隔離,所以代碼也非常容易維護。

  5、接口隔離原則

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

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

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

  使用委托即,創建一個委托類,用此類去實現分離后的其它接口中的方法。

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

  此方法,即將現有“胖”接口分成供不同客戶程序調用的兩個或多個接口,而需要實現多個接口的客戶程序,則使用多重繼承來實現。

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

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

【編輯推薦】

  1. 新手軟件項目經理該如何入門
  2. 項目經理的力量應該從哪里來?
  3. 當你從程序員變為項目經理
  4. 軟件測試項目為什么會失敗
  5. 項目管理之CVS與SVN日常使用總結
責任編輯:彭凡 來源: 博客園
相關推薦

2012-03-15 11:15:13

Java設計模式

2020-09-18 11:25:43

智能

2011-07-19 18:13:15

高效數據庫

2012-03-05 13:58:34

設計模式里氏置換

2012-03-07 10:40:19

Java設計模式

2012-03-07 11:03:13

Java設計模式

2011-06-29 15:44:19

SEO

2012-03-08 10:57:00

Java設計模式

2022-02-28 08:00:00

軟件開發敏捷方法技術

2015-01-21 16:09:12

物聯網數據分析治理

2012-03-12 16:10:26

Java設計模式

2022-05-09 14:33:20

代碼設計設計模式

2019-09-16 23:03:12

軟件設計技術

2015-04-09 10:19:10

2014-12-04 18:12:32

百會CRM

2015-09-23 17:12:18

API設計原則

2015-09-24 08:52:53

API設計原則

2021-07-29 14:42:55

設計模式Java

2022-03-31 10:24:23

人工智能技術機器人

2010-09-09 13:54:06

DIV CSS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人av电影 | 久草在线| 99精品久久久久 | 91精品国产综合久久精品 | 性一交一乱一伦视频免费观看 | 成人精品国产一区二区4080 | 国产精品美女久久久久久免费 | 日韩乱码一二三 | 日韩区 | 国产一区精品在线 | 国产高清视频在线 | 美女黄视频网站 | 国产综合一区二区 | 久久精品亚洲精品国产欧美kt∨ | 特级黄色毛片 | 99精品国产一区二区三区 | 亚洲美女一区 | 华人黄网站大全 | 精品欧美| 成人av看片| 97caoporn国产免费人人 | 久久国产精品色av免费观看 | 午夜国产精品视频 | 天天躁人人躁人人躁狂躁 | 日韩免费高清视频 | 中文字幕在线一区二区三区 | 亚洲视频一区在线观看 | 久久久久91 | www.国产一区 | 国产黄色网址在线观看 | 午夜婷婷激情 | 国产乱码精品一区二区三区五月婷 | 亚洲a视| 日韩视频区 | 激情一区二区三区 | 国产在线一区二区三区 | 国产成人精品一区二 | 久久久观看 | 性欧美精品一区二区三区在线播放 | 欧美综合一区二区 | 日本一区二区三区精品视频 |