第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么是“松耦合”?請?zhí)峁┦纠?/h1>

我似乎無法理解“松散耦合”的概念。我想這不利于單詞“寬松”通常有負(fù)面的含義,所以我總是忘了松耦合是一個很好的事情。有人可以顯示說明此概念的“之前”和“之后”代碼(或偽代碼)嗎?
查看完整描述

3 回答

?
Qyouu

TA貢獻1786條經(jīng)驗 獲得超11個贊

考慮一個簡單的購物車應(yīng)用程序,該應(yīng)用程序使用CartContents類來跟蹤購物車中的項目,并使用Order類來處理購買。訂單需要確定購物車中內(nèi)容的總價值,它可能會像這樣:


緊密耦合示例:


public class CartEntry

{

    public float Price;

    public int Quantity;

}


public class CartContents

{

    public CartEntry[] items;

}


public class Order

{

    private CartContents cart;

    private float salesTax;


    public Order(CartContents cart, float salesTax)

    {

        this.cart = cart;

        this.salesTax = salesTax;

    }


    public float OrderTotal()

    {

        float cartTotal = 0;

        for (int i = 0; i < cart.items.Length; i++)

        {

            cartTotal += cart.items[i].Price * cart.items[i].Quantity;

        }

        cartTotal += cartTotal*salesTax;

        return cartTotal;

    }

}

注意OrderTotal方法(以及Order類)如何取決于CartContents和CartEntry類的實現(xiàn)細(xì)節(jié)。如果我們試圖更改此邏輯以允許折扣,則可能必須更改所有三個類別。另外,如果我們更改為使用List集合來跟蹤項目,則也必須更改Order類。


現(xiàn)在,這是一種執(zhí)行相同操作的更好方法:


較少耦合的示例:


public class CartEntry

{

    public float Price;

    public int Quantity;


    public float GetLineItemTotal()

    {

        return Price * Quantity;

    }

}


public class CartContents

{

    public CartEntry[] items;


    public float GetCartItemsTotal()

    {

        float cartTotal = 0;

        foreach (CartEntry item in items)

        {

            cartTotal += item.GetLineItemTotal();

        }

        return cartTotal;

    }

}


public class Order

{

    private CartContents cart;

    private float salesTax;


    public Order(CartContents cart, float salesTax)

    {

        this.cart = cart;

        this.salesTax = salesTax;

    }


    public float OrderTotal()

    {

        return cart.GetCartItemsTotal() * (1.0f + salesTax);

    }

}

特定于購物車訂單項,購物車集合或訂單的實現(xiàn)的邏輯僅限于該類。因此,我們可以更改任何這些類的實現(xiàn),而不必更改其他類。我們可以通過改進設(shè)計,引入接口等來進一步消除這種耦合,但我認(rèn)為您已經(jīng)明白了。


查看完整回答
1 反對 回復(fù) 2019-11-05
?
PIPIONE

TA貢獻1829條經(jīng)驗 獲得超9個贊

iPod,iPad等許多集成產(chǎn)品(尤其是Apple的產(chǎn)品)就是緊密耦合的一個很好的例子:一旦電池耗盡,您最好購買新設(shè)備,因為電池已焊接固定并且不會松動,因此更換非常容易昂貴。松散耦合的播放器可以輕松更換電池。

這同樣也適用于軟件開發(fā):它通常是(多)最好有松耦合代碼,方便擴展和替換(并且使各個部件更容易理解)。但是,在極少數(shù)情況下,緊密耦合可能是有利的,因為幾個模塊的緊密集成可以實現(xiàn)更好的優(yōu)化。


查看完整回答
反對 回復(fù) 2019-11-05
  • 3 回答
  • 0 關(guān)注
  • 986 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號