<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 連載:面向對象葵花寶典:思想、技巧與實踐(4) - 面向對象是瑞士軍刀還是一把錘子? **為什么要面向對象?** 可以說,面向過程和計算機是如影隨形的。從計算機誕生之日起,面向過程就是占據著主導地位的思想,即使到了現在,面向過程也是無處不在的,C語言、操作系統、協議棧、驅動系統,都是面向過程的代表。? 那為什么還會有面向對象的誕生并流行呢?當然是面向過程存在某些不足,如果面向過程足夠好,誰還費心費力的去搞另外一套呢?? 前面我們提到,面向過程是一種機器的思想,我們以流水線作為類比,那么我們先拋開面向過程,來看看流水線有什么不足。? 舉個簡單的流水線例子:啤酒生產流水線。啤酒生產流水線分為“洗瓶”,“灌裝”,“壓蓋”,“殺菌”等幾個階段,這些階段總體上來說對生產一瓶醋是差不多的,但是一條啤酒生產線能夠生產醋么?應該是不行的,即使行,估計也要換一些東西,但是換了東西后,又不能生產啤酒了。? 面向過程同樣就有流水線的這個缺點,即:流程和原料相對固定,擴展比較麻煩。? 對于工業系統來說,流水線的缺點幾乎可以微不足道,因為工業化講究的是效率,而擴展性卻不是那么重要,一旦一條生產線建成,至少需要運行幾年,甚至運行十幾年都有。? 而對于軟件系統來說,很難想象一個軟件開發完成后,幾年都不變,大部分的情況是,軟件可能是1年擴展多次,甚至還沒有開發完,客戶新的需求又來了。? 在軟件系統這種環境下,面向過程顯得就比較吃力了,每次需求的變更,可能都要將流程的每個步驟、原料、中間產品都進行修改,這樣的代價在軟件系統中幾乎是不可接受的,因為每次修改都需要對全系統改動一次,不但工作量上大大增加,同時風險也是大大增加。? 而面向對象正是為了解決面向過程的這個缺點兒誕生的,因此面向對象其實也不是什么復雜和玄妙的技術,面向對象思想的核心是“可擴展性”!? 注:中文“可擴展性”對應英文有兩種解釋:extensibility?和?scalability,extensibility指系統需求變化后,能夠比較容易的擴展以支持新需求;scalability指系統訪問壓力增加后,能夠通過簡單的增加更多硬件設備以支撐訪問壓力,又翻譯為“可伸縮性”。?本文的可擴展性是指extensibility。 **面向對象應用范圍** 能做什么? 既然面向對象思想的核心是“可擴展性”,那么其適用范圍就顯而易見了:經常變化的地方就是面向對象應用的地方。? 對于軟件系統來說,常見的可變的主要集中在客戶需求部分,而不變的一般都是屬于計算機系統的基礎。? 因此,操作系統、數據庫、協議(TCP、3GPP等)這些并不適合面向對象大展身手,因為這些基礎軟件一般都比較穩定(相對穩定,并不是不變)。而對于企業應用、互聯網等應用,需求經常變更,功能不斷擴展,這正是面向對象大展身手的地方。 ? 不能做什么? 下圖是一個軟件質量屬性的全圖:? ?![](https://box.kancloud.cn/2016-01-20_569f5cc924704.jpg) 大家可以看到,“可擴展性”只是軟件質量屬性中很小的一部分,其它的屬性都不是面向對象能夠解決的。? 明白了面向對象的特點和適用范圍,是應用面向對象的關鍵,經過前面的分析,我們知道,面向對象不是瑞士軍刀,而只是一個普通的錘子而已,千萬不要拿著錘子到處敲!
                  <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>

                              哎呀哎呀视频在线观看