<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                透切理解面向對象三大基本特性是理解面向對象五大基本原則的基礎. 推薦博文: [面向對象的三大基本特征,五大基本原則](https://www.cnblogs.com/fzz9/p/8973315.html) ## **封裝:** 封裝就是隱藏對象的屬性和實現細節,僅對外公開接口,控制在程序中屬性和方法的讀和修改的訪問級別。 外界只能通過接口使用該對象,而不能通過任何形式修改對象內部實現,正是由于封裝機制,程序在使用某一對象時不需要關心該對象的數據結構細節及實現操作的方法。 封裝是面向對象的特征之一,是對象和類概念的主要特性。 **繼承:** 繼承機制實現了代碼的復用,多個類公用的代碼部分可以只在一個類中提供,而其他類只需要繼承這個類即可。 它可以使用現有類的所有功能,并在無需重新編寫原來的類的情況下對這些功能進行擴展。 通過繼承創建的新類稱為“子類”或“派生類”,被繼承的類稱為“基類”、“父類”或“超類”。 繼承最大的好處是子類獲得了父類的全部變量和方法的同時,又可以根據需要進行修改、拓展。 **多態:** 就是指一個類實例的相同方法在不同情形有不同表現形式。多態機制使具有不同內部結構的對象可以共享相同的外部接口。這意味著,雖然針對不同對象的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以調用。 ## **五大基本原則** **單一職責原則SRP(Single Responsibility Principle)** 是指一個類的功能要單一。比如在職員類里,將工程師、銷售人員、銷售經理這些情況都放在職員類里考慮,其結果將會非常混亂,在這個假設下,職員類里的每個方法都要if else判斷是哪種情況,從類結構上來說將會十分臃腫。 **開放封閉原則OCP(Open-Close Principle)** 一個模塊在擴展性方面應該是開放的而在更改性方面應該是封閉的。比如:一個網絡模塊,原來只服務端功能,而現在要加入客戶端功能, 那么應當在不用修改服務端功能代碼的前提下,就能夠增加客戶端功能的實現代碼,這要求在設計之初,就應當將服務端和客戶端分開,公共部分抽象出來。 這個原則對我們在設計類的時候很有幫助,堅持這個原則就必須盡量考慮接口封裝,抽象機制和多態技術! **里氏替換原則(the Liskov Substitution Principle LSP)** 子類應當可以替換父類并出現在父類能夠出現的任何地方,里氏代換原則是對“開-閉”原則的補充。 比如:公司搞年度晚會,所有員工可以參加抽獎,那么不管是老員工還是新員工, 也不管是總部員工還是外派員工,都應當可以參加抽獎,否則這公司就不和諧了。 **依賴倒置原則(the Dependency Inversion Principle DIP)** 具體依賴抽象,上層依賴下層。假設B是較A低的模塊,但B需要使用到A的功能, 這個時候,B不應當直接使用A中的具體類: 而應當由B定義一抽象接口,并由A來實現這個抽象接口,B只使用這個抽象接口:這樣就達到 了依賴倒置的目的,B也解除了對A的依賴,反過來是A依賴于B定義的抽象接口。通過上層模塊難以避免依賴下層模塊,假如B也直接依賴A的實現,那么就可能造成循環依賴。一個常見的問題就是編譯A模塊時需要直接包含到B模塊的cpp文件,而編譯B時同樣要直接包含到A的cpp文件。 **接口分離原則(the Interface Segregation Principle ISP)** 模塊間要通過抽象接口隔離開,而不是通過具體的類強耦合起來 不應強迫客戶端實現一個它用不上的接口,或是說客戶端不應該被迫依賴它們不使用的方法,使用多個專門的接口比使用單個接口要好的多! 比如,為了減少接口的定義,將許多類似的方法都放在一個接口中,最后會發現,維護和實現接口的時候花了太多精力,而接口所定義的操作相當于對客戶端的一種承諾,這種承諾當然是越少越好,越精練越好,過多的承諾帶來的就是你的大量精力和時間去維護! **迪米特法則** 迪米特法則(Law of Demeter)又叫作最少知識原則(Least Knowledge Principle 簡寫LKP),就是說一個對象應當對其他對象有盡可能少的了解,不和陌生人說話。 英文簡寫為: LoD.迪米特法則可以簡單說成:talk only to your immediate friends。 對于面向OOD來說,又被解釋為下面幾種方式:一個軟件實體應當盡可能少的與其他實體發生相互作用。每一個軟件單位對其他的單位都只有最少的知識,而且局限于那些與本單位密切相關的軟件單位。   迪米特法則的初衷在于降低類之間的耦合。由于每個類盡量減少對其他類的依賴,因此,很容易使得系統的功能模塊功能獨立,相互之間不存在(或很少有)依賴關系。 迪米特法則不希望類直接建立直接的接觸。如果真的有需要建立聯系,也希望能通過它的友元類來轉達。因此,應用迪米特法則有可能造成的一個后果就是:系統中存在大量的中介類,這些類之所以存在完全是為了傳遞類之間的相互調用關系——這在一定程度上增加了系統的復雜度。 有興趣可以研究一下設計模式的門面模式(Facade)和中介模式(Mediator),都是迪米特法則應用的例子。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看