国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JAVA中的依賴倒原則

2019-11-17 04:01:02
字體:
來源:轉載
供稿:網友
java中的依賴倒原則

美國法律有一條最基本的準則就是“人人平等”,我們不去管它是經過什么樣的斗爭、什么樣的流血犧牲換來的,只把它理解為一個JAVA方法,該方法定義如下:

    public final boolean 人人平等(人1,人2){

       return true;

    }

雖然各個州的法律有可能不同,如美國基本法,紐約有可能叫紐約基本法,他們應該是這樣一種關系:紐約基本法繼承美國基本法,但是不允許對該方法進行重寫。

在紐約執行法很的時候,采用:

美國基本法 = new 紐約基本法

任何地方調用"人人平等"這個方法,都是返回"true",也就是人人平等的原則在任何地方都不可能被改變,這是宏觀決定微觀,而不會因為紐約而變成男人與女人的不相等。

如某國也有基本法,也有人人平等的方法。定義應該如下:

    public boolean 人人平等(人1,人2){

       return true;

    }

如某國的某地也有基本法,某地基本法也是繼承于某國基本法,但是因為"人人平等"這個方法不是final類型的,因而可能被改寫,某地執行的時候,可能采用:

某國基本法 = new 某地基本法



某地基本法 = new 某地基本法

說不定某地基本法中在繼承某國基本法的時候,就將"人人平等"這個方法給重寫了,改成了:

    public boolean 人人平等(人1,人2){

        if(人1==某地人 && 人2==某地人){

            if(人1與人2屬性于同一階層){

                if(人1與人2除了不是同一個人基它都相同){

                    if(無人為其它情況發生){

                        return true;

                    }else{

                        return false;

                    }                   

                }else{

                    return false;

                }

            }else{

                return false;

            }

        }else{

            return false;

        }

    }

再來說說依賴倒轉原則,根據《JAVA與模式》中的說的:

抽象層次包含的是應用系統的商務邏輯和宏觀的、對整個系統來說重要的戰略性決定,是必然性的體現;而具體層次則含有一些次要的與實現有關的算法和邏輯,以及戰術性的決定,帶有相當大的偶然性選擇。具體層次的代碼是會經常有變動的,不能避免出現錯誤。抽象層次依賴于具體層次,使用具體層次的細節的算法變化立即影響到抽象層次的宏觀的商務邏輯,導致微觀決定宏觀,戰術決定戰略,偶然決定必然,這是很荒唐的事情。

看了這個也就知道為什么以后寫代碼的時候,多用用:

抽象邏輯 = new 具體邏輯

盡量少用:

具體邏輯 = new 具體邏輯

這個也就是現在比較提倡的面向接口編程,再舉一個面向接口編程比較實用的例子:

平時用List應該比較多,List本身就是一個繼承于Collection的接口,可以這樣用:

List list=new Vector();

這樣聲明的這個List其實是一個Vector類型,因為Vector是其子類,根據里氏代換原則,能夠接受父類的地方,都可以接受子類。此時的List是同步的,當然也因此會受到一定的性能影響了。如果以后換了一個不需要同步的環境,只需要將以上代碼改為如:

List list=new ArrayList();

其它的任何代碼都不需要修改,此時的List的實際類型就為ArrayList了。

從此一點,可以看出面向接口編程為什么是設計人員的珍愛了,因為他們提供了接口之后,實施人員根據該接口去實現具體類,就不擔心實施人員破壞原有程序的完整性,設計人員永遠只關心接口中的方法,具體類中的輔助方法不用去擔心。但是這是通過額外的代價換來的,如增加JAVA類等,如果抽象類能夠帶來較少的效率,采用具體耦合反而是更好的選擇,如工具類。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 遵化市| 长沙县| 麻阳| 垣曲县| 浪卡子县| 饶阳县| 昭平县| 台南市| 云林县| 尼玛县| 阜平县| 高要市| 青阳县| 辉南县| 望城县| 拉孜县| 新巴尔虎左旗| 灵丘县| 苏州市| 浙江省| 库尔勒市| 准格尔旗| 宁海县| 郯城县| 章丘市| 凯里市| 抚宁县| 当涂县| 和龙市| 景谷| 天津市| 徐州市| 兰溪市| 崇义县| 威信县| 洛川县| 石景山区| 辽源市| 衡阳县| 桓台县| 含山县|