1. 《面向對象的思考過程(原書第4版)》pdf下載在線閱讀,求百度網盤雲資源
《面向對象的思考過程(原書第4版)》([美] Matt Weisfeld)電子書網盤下載免費在線閱讀
鏈接:https://pan..com/s/1P3dmqNQ5hBcD3hlAoS0apw
書名:面向對象的思考過程(原書第4版)
作者:[美] Matt Weisfeld
譯者:黃博文
豆瓣評分:7.1
出版社:機械工業出版社/華章圖書
出版年份:2016-11-1
頁數:247
內容簡介:
本書是一部獨具特色的面向對象技術著作。書中結合代碼示例生動透徹地講述了面向對象思想的精髓,讓讀者真正學會以對象方式進行思考。本書共15章,在結構上可以分為兩部分:第一部分包括第1~10章,探討面向對象的基本概念,比如封裝、多態、繼承等;第二部分包括第11~15章,專注於將這些概念應用於一些通用的面向對象技術中,並結合了一些實用的應用程序。
本書內容精煉,示例簡單明了,適合各層次面向對象開發人員閱讀,也是高校相關專業面向對象課程的理想教學參考書。
2. 《面向對象的思考過程(原書第4版)》pdf下載在線閱讀全文,求百度網盤雲資源
《面向對象的思考過程(原書第4版)》([美] Matt Weisfeld)電子書網盤下載免費在線閱讀
鏈接: https://pan..com/s/1AFUZ-kstbGL90JVtbkZtGw
書名:面向對象的思考過程(原書第4版)
作者:[美] Matt Weisfeld
譯者:黃博文
豆瓣評分:7.1
出版社:機械工業出版社/華章圖書
出版年份:2016-11-1
頁數:247
內容簡介:
〔簡介〕
本書是一部獨具特色的面向對象技術著作。書中結合代碼示例生動透徹地講述了面向對象思想的精髓,讓讀者真正學會以對象方式進行思考。本書共15章,在結構上可以分為兩部分:第一部分包括第1~10章,探討面向對象的基本概念,比如封裝、多態、繼承等;第二部分包括第11~15章,專注於將這些概念應用於一些通用的面向對象技術中,並結合了一些實用的應用程序。
本書內容精煉,示例簡單明了,適合各層次面向對象開發人員閱讀,也是高校相關專業面向對象課程的理想教學參考書。
〔譯序〕
很多IT從業人員進入這個行業都是從學習一門編程語言開始的。對於編程,我們往往過於關注語言的語法細節,反而忽略了其背後的設計理念。面向對象的思考過程就是一個非常優秀的設計理念。它可以獨立於語言存在。如果你熟練掌握了面向對象的思考過程,那麼就可以輕松地在不同的面向對象的語言之間切換。
本書透徹地闡述了面向對象這一概念。作者Matt在書中反復強調學習面向對象的思考過程優於學習任何編程語言或工具。事實上,他也是這么做的。Matt闡述了面向對象的三要素:繼承、封裝、多態,並且自己加上了第四個要素:組合。關於組合,Matt不惜篇幅做了大量的講解,並且列舉了很多通俗易懂的例子,這也是本書的一大特色。
Matt也糾正了人們的一些普遍誤解,比如面向對象的範式與面向過程的範式並不是完全對立的關系。而且在應用面向對象的設計和開發時,Matt也講解了不少如何與遺留系統集成的技巧。同時,Matt也簡要介紹了UML這個建模利器。為了不混淆重點,他把介紹UML的章節放置在很靠後的位置。因為他明白,先了解面向對象的各項概念是最重要的。
我雖然擁有多年的從業經驗,但是再看本書時仍然有不少收獲。其實自從我接觸了函數式編程,就漸漸成為函數式編程的擁躉。我會時不時地「鼓吹」函數式編程範式的好處,順便「貶低」一下面向對象編程。但同時我也有個疑問,既然函數式編程這么好,為什麼這幾年的發展只能算是波瀾不驚,而沒有掀起大風浪呢?讀了本書之後,我似乎找到了答案。首先面向對象的思考過程更加符合大家對世界的直觀感受,畢竟不是每個人都是數學家。函數式編程可以簡化很多問題,但它並不能簡化所有問題。其次是面向對象的編程範式和函數式編程的範式並不是完全對立的,正如作者講過,面向過程的編程範式和面向對象的編程範式也不是完全對立的。比如目前流行的一些語言(Scala、Go等)都具備函數式的特點,也兼具面向對象的特點(只不過它們的面向對象的機制與傳統的方式有所不同)。所以無論你喜歡哪種編程範式,了解彼此的不同之處是至關重要的。而本書則是了解面向對象範式的優秀書籍。
本書已經更新到了第4版。從本書長達10多年的跨度來看,面向對象範式經久不衰。Matt也適時地在新版中加入了一些新的主題,比如可移植數據、分布式系統、Web服務等。Matt不僅闡述了這些技術,還講述了它們的前世今生。這樣可以幫助讀者更加充分地了解技術的演化之路。
無論你是否有面向對象編程的經驗,本書都適合你作為面向對象思考的旅程開端。最後,希望本書能給大家帶來超凡的閱讀體驗。
3. 邵維忠的介紹
北京大學教授、博士生導師。主要研究領域:軟體工程、面向對象方法、軟體復用與構件技術等。作為課題負責人或主要參加人承擔過多項科技攻關項目,如:「DJ-240系列機XCY語言編譯系統」、「DJS-200/XT2操作系統」、「軟體結構、軟體工具的研究及DJS200/XT2的研製」、「大型軟體開發環境青鳥系統」等。並多次獲得電子工業部、國家教委、國家科委等獎項,並獲得國家科學技術進步二等獎。主要著作:《面向對象的分析與設計》、《面向對象技術》。主要譯著:《面向對象的分析》、《UML用戶指南》。
4. 8.1.1什麼是面向對象的程序設計.ppt
面向對象
面向對象(Object Oriented,OO)是當前計算機界關心的重點,它是90年代軟體開發方法的主流。面向對象的概念和應用已超越了程序設計和軟體開發,擴展到很寬的范圍。如資料庫系統、互動式界面、應用結構、應用平台、分布式系統、網路管理結構、CAD技術、人工智慧等領域。
談到面向對象,這方面的文章非常多。但是,明確地給出對象的定義或說明對象的定義的非常少——至少我現在還沒有發現。其初,「面向對象」是專指在程序設計中採用封裝、繼承、抽象等設計方法。可是,這個定義顯然不能再適合現在情況。面向對象的思想已經涉及到軟體開發的各個方面。如,面向對象的分析(OOA,Object Oriented Analysis),面向對象的設計(OOD,Object Oriented Design)、以及我們經常說的面向對象的編程實現(OOP,Object Oriented Programming)。許多有關面向對象的文章都只是講述在面向對象的開發中所需要注意的問題或所採用的比較好的設計方法。看這些文章只有真正懂得什麼是對象,什麼是面向對象,才能最大程度地對自己有所裨益。這一點,恐怕對初學者甚至是從事相關工作多年的人員也會對它們的概念模糊不清。
面向對象是當前計算機界關心的重點,它是90年代軟體開發方法的主流。面向對象的概念和應用已超越了程序設計和軟體開發,擴展到很寬的范圍。如資料庫系統、互動式界面、應用結構、應用平台、分布式系統、網路管理結構、CAD技術、人工智慧等領域。
一、傳統開發方法存在問題
1.軟體重用性差
重用性是指同一事物不經修改或稍加修改就可多次重復使用的性質。軟體重用性是軟體工程追求的目標之一。
2.軟體可維護性差
軟體工程強調軟體的可維護性,強調文檔資料的重要性,規定最終的軟體產品應該由完整、一致的配置成分組成。在軟體開發過程中,始終強調軟體的可讀性、可修改性和可測試性是軟體的重要的質量指標。實踐證明,用傳統方法開發出來的軟體,維護時其費用和成本仍然很高,其原因是可修改性差,維護困難,導致可維護性差。
3.開發出的軟體不能滿足用戶需要
用傳統的結構化方法開發大型軟體系統涉及各種不同領域的知識,在開發需求模糊或需求動態變化的系統時,所開發出的軟體系統往往不能真正滿足用戶的需要。
用結構化方法開發的軟體,其穩定性、可修改性和可重用性都比較差,這是因為結構化方法的本質是功能分解,從代表目標系統整體功能的單個處理著手,自頂向下不斷把復雜的處理分解為子處理,這樣一層一層的分解下去,直到僅剩下若干個容易實現的子處理功能為止,然後用相應的工具來描述各個最低層的處理。因此,結構化方法是圍繞實現處理功能的「過程」來構造系統的。然而,用戶需求的變化大部分是針對功能的,因此,這種變化對於基於過程的設計來說是災難性的。用這種方法設計出來的系統結構常常是不穩定的 ,用戶需求的變化往往造成系統結構的較大變化,從而需要花費很大代價才能實現這種變化。
二、面向對象的基本概念
(1)對象。
對象是人們要進行研究的任何事物,從最簡單的整數到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。
(2)對象的狀態和行為。
對象具有狀態,一個對象用數據值來描述它的狀態。
對象還有操作,用於改變對象的狀態,對象及其操作就是對象的行為。
對象實現了數據和操作的結合,使數據和操作封裝於對象的統一體中
(3)類。
具有相同或相似性質的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。
類具有屬性,它是對象的狀態的抽象,用數據結構來描述類的屬性。
類具有操作,它是對象的行為的抽象,用操作名和實現該操作的方法來描述。
(4)類的結構。
在客觀世界中有若干類,這些類之間有一定的結構關系。通常有兩種主要的結構關系,即一般--具體結構關系,整體--部分結構關系。
①一般——具體結構稱為分類結構,也可以說是「或」關系,或者是「is a」關系。
②整體——部分結構稱為組裝結構,它們之間的關系是一種「與」關系,或者是「has a」關系。
(5)消息和方法。
對象之間進行通信的結構叫做消息。在對象的操作中,當一個消息發送給某個對象時,消息包含接收對象去執行某種操作的信息。發送一條消息至少要包括說明接受消息的對象名、發送給該對象的消息名(即對象名、方法名)。一般還要對參數加以說明,參數可以是認識該消息的對象所知道的變數名,或者是所有對象都知道的全局變數名。
類中操作的實現過程叫做方法,一個方法有方法名、參數、方法體。消息傳遞如圖10-1所示。
二、面向對象的特徵
(1)對象唯一性。
每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。
(2)分類性。
分類性是指將具有一致的數據結構(屬性)和行為(操作)的對象抽象成類。一個類就是這樣一種抽象,它反映了與應用有關的重要性質,而忽略其他一些無關內容。任何類的劃分都是主觀的,但必須與具體的應用有關。
(3)繼承性。
繼承性是子類自動共享父類數據結構和方法的機制,這是類之間的一種關系。在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,並加入若干新的內容。
繼承性是面向對象程序設計語言不同於其它語言的最重要的特點,是其他語言所沒有的。
在類層次中,子類只繼承一個父類的數據結構和方法,則稱為單重繼承。
在類層次中,子類繼承了多個父類的數據結構和方法,則稱為多重繼承。
在軟體開發中,類的繼承性使所建立的軟體具有開放性、可擴充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創建工作量,增加了代碼的可重性。
採用繼承性,提供了類的規范的等級結構。通過類的繼承關系,使公共的特性能夠共享,提高了軟體的重用性。
(4)多態性(多形性)
多態性使指相同的操作或函數、過程可作用於多種類型的對象上並獲得不同的結果。不同的對象,收到同一消息可以產生不同的結果,這種現象稱為多態性。
多態性允許每個對象以適合自身的方式去響應共同的消息。
多態性增強了軟體的靈活性和重用性。
對象,強調物體屬性, 比如實現邏輯 物體A 移動到B點,
對象思想就是要你想像 你吧A 看成什麼 你可以吧它看成車, 用車輪的方式(方法)讓它走動, 可以看成托運(方法)的方式拉過去。
面向對象的方法 是一類物體的屬性 所具備的 行為,理論上 可以參照面向過程的函數去理解
兒面向過程, 我不關心你用什麼方式,看成什麼 ,管你是推,是拽,只要你運過來就行 相對而言 沒有針對性
樓主可以 設想一下網路游戲, 你玩的游戲 的怪物, 是分種類的, 他們都是自動的東西, 沒人去手動生成, 一類怪物 有一類招數和樣子, 行為屬性, 這就是對象思想
5. 面向對象分析方法的步驟和特點
使用VC進行項目開發已經有一段時間了,在這段時間里感觸最深的就是自己對宏觀性面向對象分析方法的缺乏。面向對象分析是當今流行的系統分析方法之一,下面就談談在做項目的過程中我的一些小經驗。
在面對簡單系統時程序員可以很順利的提出問題的解決方案,並且一般情況下都是可行的。這是由於問題域關系簡單,所涉及到的內部構造、聯系比較容易解釋。而對於當前越來越復雜的系統,其問題域也就顯示的越來越復雜,而且內部的關系也不是很容易解釋,有些大的系統常常超出了人的解決問題的能力。在這種情況下,以往的面對過程的解決方法已經不能滿足日益增長的復雜系統分析的需要,在這種情況下,面向對象的分析方法就顯得尤為總要了。
在面向對象設計領域中,在橫向上把問題域分為數個不同的、低耦合、高內聚的問題域,而在縱向上又繼續分解各個不同的小的問題域,最後分解為葉節點問題域,從而解決問題。在面對對象分析方法中,用數個對象間的消息傳遞來完成整個問題。
下面看一看復雜系統的5個屬性:
1. 雜性經常是以層次的形式表現出來,復雜系統是由相互關聯的子系統組成,而這些子系統又是由他們各自的子系統構成,並由此類推到最底層的基本構件。
2. 對系統中最基本的構件的選擇是任意的,而且在很大程度上取決於系統觀察者的判斷力。
3. 一般而言,各構件內的連接總是要強於構件間的連接。在從構件的低頻動態中分離出高頻動態時,這一屬性是相當有用的。這是因為高頻動態涉及到各部件的內部結構,而低頻動態涉及到構件間的交互。
4. 層次系統通常都是由僅僅少數不同的子系統通過不同的排列組合方式組成。
5. 我們發現正運行的復雜系統總是由以前運行的簡單系統演化而來……任何胡亂湊合設計出來的復雜系統都不可能正常運轉,也不可能被修補好。我們必須由運行中的簡單系統開始。
對於第一點,正像我上面所說的那樣,系統是層次結構的。能夠給一個復雜的系統進行正確的層次分析,才能夠保證對系統的正確估計,包括可行性、可維護性、可擴展性……等等。而且對於日後對該系統進行維護(maintenance)、演化(evolution)、維持(preservation)都能夠很好的支持。
對於其中的第二點,強調了觀察者的判斷力,其實我認為其中也包括觀察者的身份角度。對於一個系統而言,觀察者並不是只進行分析設計的工程師,編碼階段的程序員,還應該包括用戶等所有這些同該系統有關的人員。作為不同的人員,對於系統就有不同的觀察點、觀察角度、身份等特殊因素。因此在不同身份的人(指參與者)甚至同一身份的人眼中說觀察到的系統特性都是不盡相同的。在大學里大家都接觸過透明性的概念,這就是不同觀察者所觀察角度不同的直觀反應。對於用戶來說,基本上底層的操作、演算法、通訊對於他們來說都是透明的,他們根本不用理會(其實也不知道)內部用了什麼。而對於一個負責某模塊的程序員來說就不會考慮其他模塊的實現,對於他們來說其他模塊是透明的,他們只需要負責管理好提供的模塊介面就OK了。
對於第三點,講的就是面對對象分析設計的方向,在面對對象分析設計系統時,被分解的各個模塊一定要做到高內聚、低耦合。有良好高內聚、低耦合系統常常會很容易維護,一個地方改動通常不需要牽扯到大的改動,維護行強。而且對於像VC程序這種更要求效率的程序來說,高內聚、低耦合也可以提高程序的運行期效率,應為對象內部的調用一般情況下會相比模塊間的調用佔用更少的執行時間,這樣將高頻動態封裝在一個對象內部就會一定程度上提高程序運行期執行效率。
第四點則說明了面向對象程序設計對程序設計可復用性的優點。在這點中所「層次系統由僅僅少數不同的子系統構成」那麼多數子系統在不同的復雜系統中都是能夠重復使用的。比如說建築一棟大廈和建築橋梁,雖然兩者都是復雜的系統,但是對於其結構中就會有很多相似甚至相同之處,沒有必要建築好大廈回頭建築橋梁的時候又要重新設計每一快磚瓦。
第五點提醒我們在系統設計時,盡量使用以往能夠正常運行的子系統來重新構件新的系統。這一點不僅說明第四點中的復用性,而且也說明了一個我們常常要犯的錯誤。就是將並沒有通過嚴格測試的子系統,匆忙的加入到大系統中,這樣做不利於對系統的基層,常常引入了其他錯誤,使得系統頻頻崩潰,最嚴重會導致系統的重新分析。
這是我對面向對象的一點心得體會,雖然我們大家在平時工作中所面對的問題、問題域不同,使用的開發工具不同,但是面向對象是一種思維方式,有利於分析、解決問題的一種方法,並不和任何語言掛鉤(當然語言對於面向對象特性的支持程度有所不同)。所以希望各位同事能夠盡量使用科學的方法分析解決問題,形成一種設計模式,以供大家互相交流。
軟體設計是一種藝術,也是一門工程學。
6. 哪有pdf格式的Visual C++面向對象與可視化程序設計習題解析與編程實例(第2版)下
http://search.gougou.com/search?search=Visual%20C%2B%2B%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E4%B8%8E%E5%8F%AF%E8%A7%86%E5%8C%96%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E4%B9%A0%E9%A2%98%E8%A7%A3%E6%9E%90%E4%B8%8E%E7%BC%96%E7%A8%8B%E5%AE%9E%E4%BE%8B&id=0
打開上面這個地址!你找找看
7. 面向對象的分析和面向對象設計的聯系和區別
分析是發現過程,設計是發明過程,這就是區別
8. 求譚浩強C++面向對象程序設計pdf,紅皮的哪個版本!!!!!!!必有重賞!!!!!
如果沒什麼基礎,先從C開始入門吧。C++語言本身包含的東西很多很雜,對初學者來說不是太好上手。C語言出現年代更早且C++設計的時候就是要在C上添加面向對象支持。C語言的語法規范大致上是C++的一個子集,語法簡單,沒有C++的各種讓人困惑的高級特性,學起來相對簡單直接。電子書這東西不可靠,剛學編程一個錯字就能讓你糾結半天 ,浪費時間不說,有時還會曲解原本的概念,把你帶入一個錯誤的方向。我剛學編程就是這樣過來的,要多坑爹有多坑爹。上242上597上99上60上,數字能見 我 Q,我是大學計算機專業的,能助你
9. 《深入淺出面向對象分析與設計》pdf下載在線閱讀全文,求百度網盤雲資源
《深入淺出面向對象分析與設計》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1K7kvloNC7e3VjpLJ4SGYfA
10. 程序員需要了解的10個面向對象設計
面向對象設計原則是OOPS編程的核心,學習面向對象編程像「抽象」、「封裝」、「多態」、「繼承」等基礎知識是重要的,但同時為了創建簡潔、模塊化的設計,了解這些設計原則也同等重要。
(設計原則)底線是永遠追求高內聚、低耦合的編碼或設計。Apache和Sun的開源代碼是學習和OOPS設計原則的良好範例。它們向我們展示了,設計原則在編程中是如何使用的。JDK使用了一些設計原則:BorderFactory類中的工廠模式、Runtime類中的單例模式、.io類中的裝飾器模式。順便說一句,如果您真的對編碼原則感興趣,請閱讀JoshuaBloch的Effective,他編寫過API。我個人最喜歡的關於面向對象設計模式的是KathySierra的HeadFirstDesignPattern(深入淺出設計模式),以及其它的關於深入淺出面向對象分析和設計。這些書對編寫更好的代碼有很大幫助,充分利用各種面向對象和SOLID的設計模式。
雖然學習設計模式(原則)最好的方法是現實中的例子和理解違反設計原則帶來的不便,本文的宗旨是向那些沒有接觸過或正處於學習階段的程序員介紹面向對象設計原則。
DRY_Don』trepeatyourself
我們第一個面向對象設計原則是:DRY,從名稱可以看出DRY(don』trepeatyourself)意思是不寫重復代碼,而是抽象成可復用的代碼塊。如果您有兩處以上相同的代碼塊,請考慮把它們抽象成一個單獨的方法;或者您多次使用了硬編碼的值,請把它們設置成公共常量。這種面向對象設計原則的優點是易於維護。重要的是不要濫用此原則,重復不是針對代碼而是針對功能來說。它的意思是,如果您使用通用代碼來驗證OrderID和SSN,這並不意味著它們是相同的或者他們今後將保持不變。通過把通用代碼用於實現兩種不同的功能,或者您把這兩種不同的功能密切地聯系在一起;當您的OrderID格式改變時,您的SSN驗證代碼將會中斷。所以要當心這種耦合,而且不要把彼此之間沒有任何關系卻類似的代碼組合在一起。
封裝經常修改的代碼
EncapsulateWhatChanges
在軟體領域永遠不變的是「變化」,所以把您認為或懷疑將來要被修改的代碼封裝起來。這種面向對象設計模式的優點是:易於測試和維護恰當封裝的代碼。如果您在用編程,那麼請遵守以下原則:變數和方法的訪問許可權默認設置為私有,並且逐步放開它們的訪問許可權,例如從「private」到「protected」、「notpublic」。中的一些設計模式使用了封裝,工廠設計模式就是一個例子,它封裝了創建對象的代碼而且提供了以下靈活性:後續生成新對象不影響現有的代碼。
打開/關閉設計原則
OpenClosedDesignPrinciple
類、方法/函數應當是對擴展(新功能)開放,對修改閉合。這是另外一個優雅的SOLID設計原則,以防止有人修改通過測試的代碼。理想情況下假如您添加了新功能,那麼您的代碼要經過測試,這就是打開/關閉設計原則的目標。順便說一句,SOLID中的字母「O」指的是打開/關閉設計原則。
單一職責原則
SingleResponsibilityPrinciple(SRP)
單一職責原則是另外一個SOLID設計原則,SOLID中的字母「S」指的就是它。按照SRP,一個類修改的原因應當有且只有一個,或者一個類應當總是實現單一功能。如果您在中的一個類實現了多個功能,那麼這些功能之間便產生了耦合關系;如果您修改其中的一個功能,您有可能就打破了這種耦合關系,那麼就要進行另一輪測試以避免產生新的問題。
依賴注入/反轉原則
不要問框架的依賴注入功能將會給你帶來什麼益處,依賴注入功能在spring框架里已經很好的得到了實現,這一設計原則的優雅之處在於:DI框架注入的任何一個類都易於用模擬對象進行測試,並且更易於維護,因為創建對象的代碼在框架里是集中的而且和客戶端代碼是隔離的。有多種方法可以實現依賴注入,例如使用位元組碼工具,其中一些AOP(面向切面編程)框架如切入點表達式或者spring里使用的代理。想對這種SOLID設計原則了解更多,請看IOC和DI設計模式中的例子。SOLID中的字母「D」指的就是這種設計原則。
優先使用組合而非繼承
ForCompositionoverInheritance
如果可以的話,要優先使用組合而非繼承。你們中的一些人可能為此爭論,但我發現組合比繼承更有靈活性。組合允許在運行時通過設置屬性修改一個類的行為,通過使用多態即以介面的形式實現類之間的組合關系,並且為修改組合關系提供了靈活性。甚至Effective也建議優先使用組合而非繼承。
里氏替換原則
根據里氏替換原則,父類出現的地方可以用子類來替換,例如父類的方法或函數被子類對象替換應該沒有任何問題。LSP和單一職責原則、介面隔離原則密切相關。如果一個父類的功能比其子類還要多,那麼它可能不支持這一功能,而且也違反了LSP設計原則。為了遵循LSPSOLID設計原則,派生類或子類(相對父類比較)必須增強功能,而非減少。SOLID中的字母「L」指的就是LSP設計原則。
介面隔離原則
介面隔離原則指,如果不需要一個介面的功能,那麼就不要實現此介面。這大多在以下情況發生:一個介麵包含多種功能,而實現類只需要其中一種功能。介面設計是一種棘手的工作,因為一旦發布了介面,您就不能修改它否則會影響實現該介面的類。在中這種設計原則的另一個好處是:介面有一個特點,任何類使用它之前都要實現該介面所有的方法,所以使用功能單一的介面意味著實現更少的方法。
編程以介面(而非實現對象)為中心
編程總是以介面(而非實現對象)為中心,這會使代碼的結構靈活,而且任何一個新的介面實現對象都能兼容現有代碼結構。所以在中,變數、方法返回值、方法參數的數據類型請使用介面。這是許多程序員的建議,Effective以及headfirstdesignpattern等書也這樣建議。
代理原則
不要期望一個類完成所有的功能,電腦培訓http://www.kmbdqn.cn/認為可以適當地把一些功能交給代理類實現。代理原則的典範是:中的equals()和hashCode()方法。為了比較兩個對象的內容是否相同,我們讓用於比較的類本身完成對比工作而非它們的調用方。這種設計原則的好處是:沒有重復編碼而且很容易修改類的行為。