亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

面向對象設計模式的核心法則

2019-11-20 21:44:50
字體:
來源:轉載
供稿:網友

1. 單一職責

就一個類而言,應該僅有一個引起它變化的原因。
如果一個類承擔的職責過多,就等于把這些職責耦合在一起,一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭到意想不到的破壞。
軟件設計真正要做的許多內容,就是發現職責并把那些職責互相分離。如果你多于一個動機去改變一個類,那么這個類就具有多于一個的職責。

2. 開放封閉

軟件實體(類,模塊,函數等)應該可以擴展,但是不可修改。也就是說,對于擴展是開放的,對于更改是封閉的。
如此設計,面對需求的改變可以保持相對的穩定,從而使系統可以在第一個版本以后不斷的推出新的版本。
無論模塊是多么的'封閉',都會存在一些無法對之封閉的變化。既然不可能完全封閉,設計人員必須對于他設計的模塊應該對哪種變化封閉做出選擇。他必須先猜測出最有可能發生的變化種類,然后構造抽象來隔離那些變化。
等到變化發生時立即采取行動。

在我們最初編寫代碼時,假設變化不會發生。當變化發生時,我們就創建抽象來隔離以后發生的同類變化。
面對需求,對程序的改動是通過增加新代碼進行的,而不是更改現有的代碼。
我們希望的是在開發工作展開不久就知道可能發生的變化。查明可能發生的變化所等待的時間越長,要創建正確的抽象就越困難。
開放-封閉原則是面向對象設計的核心所在。遵循這個原則可以帶來面向對象技術所聲稱的巨大好處,也就是可維護、可擴展、可復用、靈活性好。開發人員應該僅對程序中呈現出頻繁變化的那些部分做出抽象,然而,對于應用程序中的每個部分都可以的進行抽象同樣不是一個好主意。拒絕不成熟的抽象和抽象本身一樣重要。

3. 依賴倒轉

高層模塊不應該依賴底層模塊。兩個都應該依賴抽象。
抽象不應該依賴細節,細節應該依賴抽象。
抽象不應該依賴細節,細節應該依賴于抽象,針對接口編程,不要對實現編程。
依賴倒轉其實可以說是面向對象設計的標志,用哪種語言來寫程序并不重要,如果編寫時考慮的都是如何針對抽象編程而不是針對細節編程, 即程序中所有的依賴關系都終止于抽象類或者接口,那就是面向對象的設計,反之那就是過程化的設計了。

4. 里氏代換

一個軟件實體如果使用的是一個父類的話,那么一定適用于其子類,而且察覺不出父類對象與子類對象的區別。也就是說,在軟件里面,把父類都替換成它的子類,程序的行為沒有變化。
子類型必須能用替換掉它們的父類型。
只有當子類可以替換掉父類,軟件單位的功能不受到影響時,父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。

5. 合成/聚合復用

盡量使用合成/聚合,盡量不要使用類繼承。
優先使用對象的合成/聚合將有助于你保持每個類被封裝并被集中在單個任務上,這樣累和類繼承層次會保持較小的規模,并且不大可能增長為不可控制的龐然大物。

6. 迪米特法則

如果兩個類不必彼此直接通信,那么著兩個類就不應當發生直接的相互作用。如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉發這個調用。
在類的結構設計上,每一個類都應當盡量降低成員的訪問權限,也就是說,一個類包裝好自己的private狀態,不需要讓別的類知道的字段或行為就不要公開。
迪米特法則其根本思想是強調了類之間的松耦合。

類之間的耦合越弱,越有利于復用,一個處在弱耦合的類被修改,不會對有關系的類造成波及。

輔助資料:

常用創建型設計模式(其他類型模式就不提了,自己看書)

創建型模式隱藏了這些類的實例是如何被創建和放在一起,整個系統關于這些對象所知道的是由抽象類所定義的接口。這樣,創建型模式在創建了什么、誰創建它=它是怎么被創建的,以及何時創建這些方面提供了很大的靈活性。

1. 工廠方法模式(Factory Method)

定義一個用于創建對象的接口,讓子類決定實例化哪一個類,工廠模式使一個類的實例化延遲到其子類。
創建型模式抽象了實例化的過程,它們幫助一個系統獨立于如何創建、組合和表示它的那些對象。創建型模式都會將關于該系統使用哪些具體的類的信息封裝起來。允許客戶用結構和功能差別個很大的'產品'對象配置一個系統。配置可以是靜態的,即在編譯時制定,也可以是動態的,就是運行時再指定。
通常設計應該是從工廠方法開始,當設計者發現需要更大的靈活性時,設計便會向其他創建型模式演化。當設計者在設計標準之間進行權衡的時候,了解多個創建型模式可以給設計者更多的選擇余地。

2. 抽象工廠模式(Abstract Factory)

提供一個創建一系列或者相關依賴對象的接口,而無需指定它們具體的類。

3. 建造者模式(Builder)

將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
內聚性與耦合性 內聚性描述的是一個例程內部組成部分之間相互聯系的緊密程度。而耦合性描述的是一個例程與其他例程之間聯系的緊密程度。軟件開發的目標應該是創建這樣的例程:內部完整,也就是高內聚,而與其他例程之間的聯系則是小巧、直接、可見、靈活的,這樣就是松耦合。
將一個復雜對象的構建與它的表示分離,這就可以很容易地改變一個產品的內部表示,并且使得構造代碼和表示代碼分開。這樣對于客戶來說,它無需關心產品的創建過程,而只要告訴我需要什么,我就能用同樣的構建過程創建不同的產品給客戶。

4. 原型模式(Prototype)

用原型的實例制定創建對象的種類,并且通過拷貝這些原型創建新的對象。
建立相依數目的原型并克隆它們通常比每次用合適的狀態手工實例化該類更方便一些。

5. 單例模式(Singleton)

保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
對一些類來說,一個實例是很重要的。一個全局變量可以使得一個對象被訪問,但它不能防止客戶實例化多個對象。單例的優勢就是讓類自身負責保存它的唯一實例。這個類可以保證沒有其他實例可以被創建,并且單例還提供了一個訪問該實例的方法。這樣就使得對唯一的實例可以嚴格地控制客戶怎樣以及何時訪問它。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
福利视频一区二区| 97不卡在线视频| 日韩美女视频中文字幕| 国产精品久久久久久久app| 国产区精品视频| 日韩经典中文字幕在线观看| 久久精品电影网站| 欧美日韩aaaa| 裸体女人亚洲精品一区| 国产伦精品一区二区三区精品视频| 2018国产精品视频| 久久99久久99精品中文字幕| 国产精品日韩在线观看| 亚洲成人av在线播放| 一区二区三区四区在线观看视频| 欧美中文字幕视频| 亚洲精品aⅴ中文字幕乱码| 久久亚洲国产成人| 久久久成人的性感天堂| 亚洲一区二区三区四区在线播放| 欧美日韩成人在线播放| 欧美一区二区大胆人体摄影专业网站| 亚洲精品日韩欧美| 日韩欧美极品在线观看| 自拍偷拍亚洲欧美| 高清欧美一区二区三区| 国产精品r级在线| 欧美成人sm免费视频| 欧美视频一区二区三区…| 国产精品成人品| 日韩欧美成人区| 98精品国产自产在线观看| 亚洲男人天堂2023| 亚洲欧美另类在线观看| 国产欧美日韩综合精品| 亚洲精品自在久久| 亚洲欧美中文字幕| 97香蕉久久夜色精品国产| 亚洲美女av在线| 亚洲欧洲自拍偷拍| 久久91亚洲精品中文字幕奶水| 国产精品久久99久久| 亚洲香蕉在线观看| 97精品久久久| 久久亚洲综合国产精品99麻豆精品福利| 国产亚洲精品久久久优势| 欧美福利视频网站| 热99在线视频| 欧美黑人巨大精品一区二区| 91国产精品91| 欧美激情影音先锋| 在线亚洲国产精品网| 97超级碰碰人国产在线观看| 国产日韩欧美夫妻视频在线观看| 国产精品久久久久不卡| 青青草原一区二区| 91日本视频在线| 精品综合久久久久久97| 欧美日韩国产麻豆| 亚洲高清色综合| 国产日本欧美在线观看| 久久久久久久久久久免费精品| 久久久久久久久久久亚洲| 最近中文字幕2019免费| 国产自产女人91一区在线观看| 国产精品久久久久久网站| 精品毛片三在线观看| 久久99精品视频一区97| 日韩经典中文字幕| 欧洲亚洲在线视频| 91免费视频网站| 亚洲国产成人在线播放| 国产丝袜一区二区| 激情成人在线视频| 久久全球大尺度高清视频| 97精品一区二区视频在线观看| 免费成人高清视频| 97超级碰碰碰| 日韩免费电影在线观看| 日本国产精品视频| 国产精品欧美日韩久久| 国产精品国产自产拍高清av水多| 欧美成人精品三级在线观看| 91地址最新发布| 欧美激情视频网| 亚洲欧美制服第一页| 亚洲欧美激情另类校园| 亚洲国产精品一区二区三区| 91av视频导航| 亚洲aa在线观看| 国产免费久久av| 国产精品福利网站| 亚洲无线码在线一区观看| 亚洲第一区在线| 亚洲欧美国产高清va在线播| 日韩精品在线观| 97视频免费观看| 亚洲综合日韩中文字幕v在线| 国产精品黄视频| 欧美一级片久久久久久久| 国产精品高潮粉嫩av| 91久久精品一区| 欧美丰满少妇xxxx| 亚洲自拍小视频| 91精品一区二区| 欧美华人在线视频| 中文字幕日韩在线观看| 日韩av电影在线网| 久久成人国产精品| 欧美激情成人在线视频| 中文字幕免费精品一区高清| 精品久久久精品| 成人激情在线播放| 精品中文视频在线| 中文字幕亚洲在线| 国内揄拍国内精品| 最新91在线视频| 日韩欧美国产骚| 国产精品一区二区三区毛片淫片| 欧美电影电视剧在线观看| 国产精品视频一区二区三区四| 91中文在线观看| 欧美日韩国产影院| 欧美香蕉大胸在线视频观看| 国产精品女视频| 成人免费观看网址| 欧美激情一区二区三级高清视频| 中文日韩在线视频| 亚洲精品影视在线观看| 91精品国产免费久久久久久| 色吧影院999| 最近2019中文字幕mv免费看| 26uuu另类亚洲欧美日本一| 欧美成人激情在线| 亚洲第一综合天堂另类专| 久久精品亚洲一区| 成人久久精品视频| 亚洲女同精品视频| 国产精品爽爽爽爽爽爽在线观看| 91免费在线视频网站| 欧美一区二区三区免费观看| 久久久精品久久久| 欧美性受xxx| 久久久噜噜噜久噜久久| 成人有码视频在线播放| 久久久久中文字幕2018| 欧美性猛交xxxx免费看久久久| 久久久亚洲影院| 国产婷婷成人久久av免费高清| 亚洲人成电影在线| 亚洲精品ady| 大胆人体色综合| 日本高清久久天堂| 色噜噜狠狠狠综合曰曰曰88av| 久久影院在线观看| 亚洲国产另类久久精品| 久久久噜久噜久久综合| 久久精品国亚洲| 亚洲伊人久久综合| 国产精品成人aaaaa网站| 久久视频在线直播| 91精品国产高清久久久久久91| 亚洲护士老师的毛茸茸最新章节| 日本韩国在线不卡|