国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

通過(guò)簡(jiǎn)單的中介者模式模型了解迪米特法則(設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐 P14)

這篇具有很好參考價(jià)值的文章主要介紹了通過(guò)簡(jiǎn)單的中介者模式模型了解迪米特法則(設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐 P14)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

雖然面向?qū)ο蠊膭?lì)將行為分布到各個(gè)對(duì)象中,把對(duì)象劃分成更小的粒度有利于對(duì)象可復(fù)用性,但有時(shí)對(duì)象之間聯(lián)系太多又會(huì)反而降低可復(fù)用性

通過(guò)一個(gè)中介者對(duì)象封裝一組對(duì)象之間的交互,減少對(duì)象間直接耦合,對(duì)象之間的通信集中在中介者對(duì)象中,使得對(duì)象間交互更加簡(jiǎn)單和可控

反例

舉個(gè)例子,5 v 5 玩家對(duì)戰(zhàn)游戲設(shè)計(jì)中,我們要?jiǎng)?chuàng)建角色 Player 對(duì)象

  • 當(dāng)玩家死亡時(shí),我們需要遍歷所有隊(duì)友,如果都死亡了就通知所有敵人游戲勝利、通知己方所有人游戲失敗

我們首先想到可以通過(guò)創(chuàng)建玩家角色 Factory 工廠提高初始化角色時(shí)的效率,但這并不能解決對(duì)象和對(duì)象間的耦合關(guān)系,隨著玩家數(shù)量變成5、變成10、變成20,遍歷一遍所有角色會(huì)嚴(yán)重降低效率

如果角色還要有切換陣營(yíng)、離開(kāi)隊(duì)伍功能,那這就更令人惱火了

實(shí)現(xiàn)

我們?cè)囍堰@個(gè)收發(fā)信息、通知?jiǎng)倮墓δ苡靡粋€(gè)中介者來(lái)管理,這是一個(gè)最基礎(chǔ)的例子,只實(shí)現(xiàn)了收發(fā)信息功能,當(dāng)然還可以實(shí)現(xiàn)管理游戲輸贏、比分等等~

// 抽象的中介者
public abstract class Mediator
{
    public abstract void SendMessage(string message, Player sender);
}

// 具體的中介者
public class GameMediator : Mediator
{
    private Dictionary<string, Player> players = new Dictionary<string, Player>();

    public void RegisterPlayer(Player player)
    {
        players[player.Name] = player;
    }

    public override void SendMessage(string message, Player sender)
    {
        foreach (var player in players.Values)
        {
            if (player != sender)
            {
                player.ReceiveMessage(message);
            }
        }
    }
}

// 抽象玩家,擁有玩家的基本屬性
public abstract class Player
{
    protected Mediator mediator;
    public string Name { get; private set; }

    public Player(string name, Mediator mediator)
    {
        Name = name;
        this.mediator = mediator;
    }

    public void Send(string message)
    {
        mediator.SendMessage(message, this);
    }

    public abstract void ReceiveMessage(string message);
}

// 具體玩家,在這里初始化成紅隊(duì)、藍(lán)隊(duì)
public class PlayerImpl : Player
{
    public PlayerImpl(string name, Mediator mediator) : base(name, mediator)
    {
    }

    public override void ReceiveMessage(string message)
    {
        Console.WriteLine($"{Name} received message: {message}");
    }
}

class Program
{
    static void Main(string[] args)
    {
        GameMediator mediator = new GameMediator();

        Player player1 = new PlayerImpl("Player1", mediator);
        Player player2 = new PlayerImpl("Player2", mediator);
        Player player3 = new PlayerImpl("Player3", mediator);

        mediator.RegisterPlayer(player1);
        mediator.RegisterPlayer(player2);
        mediator.RegisterPlayer(player3);

        player1.Send("Hello, everyone!");
        player2.Send("Hey, Player1!");
    }
}

迪米特法則

又叫最小知識(shí)原則,是指一個(gè)對(duì)象應(yīng)該盡可能少的了解其他對(duì)象。如果對(duì)象之間耦合度太高,一個(gè)對(duì)象發(fā)生改變之后難免會(huì)影響其他對(duì)象

其中中介者模式最大的缺點(diǎn)就是新增了一個(gè)中介者對(duì)象,對(duì)象之間的復(fù)雜度全部轉(zhuǎn)移到中介者身上,最后會(huì)導(dǎo)致中介者對(duì)象變得異常復(fù)雜

我們寫(xiě)程序是為了快速完成項(xiàng)目交付生產(chǎn),而不是堆砌模式和過(guò)度設(shè)計(jì),對(duì)象和模塊之間有一些依賴(lài)關(guān)系是正常的,如果對(duì)象之間的復(fù)雜耦合導(dǎo)致了調(diào)用和維護(hù)困難,我們就可以考慮使用中介者模式來(lái)重構(gòu)代碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-726665.html

到了這里,關(guān)于通過(guò)簡(jiǎn)單的中介者模式模型了解迪米特法則(設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐 P14)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式——中介者模式

    中介者模式(Mediator Pattern)是一種行為型設(shè)計(jì)模式,它旨在減少多個(gè)對(duì)象之間的相互引用和耦合度。通過(guò)引入一個(gè)中介對(duì)象來(lái)封裝一系列交互行為,使得原本復(fù)雜的網(wǎng)狀關(guān)系結(jié)構(gòu)轉(zhuǎn)變?yōu)樾切谓Y(jié)構(gòu),所有對(duì)象與中介者通信而不是彼此直接通信。 抽象中介者(Mediator Interface):

    2024年01月18日
    瀏覽(31)
  • 設(shè)計(jì)模式篇---中介者模式

    設(shè)計(jì)模式篇---中介者模式

    中介者模式:用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯示地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變它們之間的交互。 就好比世界各個(gè)國(guó)家之間可能會(huì)產(chǎn)生沖突,但是當(dāng)產(chǎn)生沖突的時(shí)候需要聯(lián)合國(guó)來(lái)解決沖突。每個(gè)國(guó)家之間的關(guān)系,就好

    2024年01月22日
    瀏覽(28)
  • 設(shè)計(jì)模式之中介者模式

    設(shè)計(jì)模式之中介者模式

    詳細(xì)介紹 ????????中介者模式(Mediator Pattern)是一種行為設(shè)計(jì)模式, 它通過(guò)定義一個(gè)中介類(lèi)來(lái)封裝多個(gè)對(duì)象之間的交互,使各對(duì)象不需要顯示地相互引用,從而降低耦合度,提高系統(tǒng)的可維護(hù)性和靈活性。中介者模式將原本一對(duì)多的網(wǎng)狀關(guān)系轉(zhuǎn)變?yōu)橐粚?duì)多的關(guān)系,即每個(gè)

    2024年04月29日
    瀏覽(46)
  • Java中介者模式

    目錄 定義 結(jié)構(gòu) 案例 優(yōu)點(diǎn) 缺點(diǎn) 使用場(chǎng)景 又叫調(diào)停模式,定義一個(gè)中介角色來(lái)封裝一系列對(duì)象之間的交互,使原有對(duì)象之間的耦合松散,且可以獨(dú)立地改變它們之間的交互。 中介者模式包含以下主要角色: 抽象中介者角色:它是中介者的接口,提供了同事對(duì)象注冊(cè)與轉(zhuǎn)發(fā)同

    2024年02月04日
    瀏覽(17)
  • 設(shè)計(jì)模式(十七)中介者

    設(shè)計(jì)模式(十七)中介者

    義一個(gè)對(duì)象來(lái)封裝一系列的對(duì)象交互。中介者模式使各對(duì)象不需要顯示地相互引用,從而使其耦合松散,而且可以讓你相對(duì)獨(dú)立地改變它們之間的交互。中介者模式又稱(chēng)為調(diào)停模式,它是一種對(duì)象說(shuō)行為型模式。 在中介者模式中,引入了用于協(xié)調(diào)其他對(duì)象/類(lèi)之間的相互調(diào)用

    2024年02月04日
    瀏覽(21)
  • 第二十章 中介者模式

    第二十章 中介者模式

    提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 鬧鐘 Alarm 咖啡機(jī) CoffeeMachine TV 窗簾 Curtains

    2024年02月02日
    瀏覽(19)
  • 大話設(shè)計(jì)模式之中介者模式

    大話設(shè)計(jì)模式之中介者模式

    中介者模式是一種行為型設(shè)計(jì)模式,它通過(guò)引入一個(gè)中介者對(duì)象來(lái)封裝一系列對(duì)象之間的交互,從而減少對(duì)象之間的直接通信,使得對(duì)象之間的耦合度降低,同時(shí)提高了系統(tǒng)的可維護(hù)性和靈活性。 在中介者模式中,對(duì)象之間的通信不再直接發(fā)生,而是通過(guò)中介者對(duì)象來(lái)進(jìn)行。

    2024年04月16日
    瀏覽(24)
  • Java設(shè)計(jì)模式-中介者模式

    中介者模式,就是用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯式地互相引用,從而使其耦合松散,而且可以獨(dú)立的改變它們之間的交互。 其實(shí)中介者模式很簡(jiǎn)單的,就像它的名字一樣,中介,調(diào)用某個(gè)類(lèi)的某些方法的時(shí)候,我們不直接去跟那個(gè)類(lèi)的實(shí)

    2024年02月15日
    瀏覽(22)
  • 行為型設(shè)計(jì)模式——中介者模式

    行為型設(shè)計(jì)模式——中介者模式

    中介者模式主要是將關(guān)聯(lián)關(guān)系由一個(gè)中介者類(lèi)統(tǒng)一管理維護(hù),一般來(lái)說(shuō),同事類(lèi)之間的關(guān)系是比較復(fù)雜的,多個(gè)同事類(lèi)之間互相關(guān)聯(lián)時(shí),他們之間的關(guān)系會(huì)呈現(xiàn)為復(fù)雜的網(wǎng)狀結(jié)構(gòu),這是一種過(guò)度耦合的架構(gòu),即不利于類(lèi)的復(fù)用,也不穩(wěn)定。例如在下左圖中,有六個(gè)同事類(lèi)對(duì)象

    2024年01月18日
    瀏覽(23)
  • 設(shè)計(jì)模式- 中介者模式(Mediator)

    設(shè)計(jì)模式- 中介者模式(Mediator)

    中介者模式(Mediator Pattern),是一種對(duì)象行為型模式。該模式的主要目的是定義一個(gè)中介對(duì)象來(lái)封裝一系列對(duì)象之間的交互,使原有對(duì)象之間的耦合變得松散,并且可以獨(dú)立地改變它們之間的交互。 抽象中介者(Mediator) :這是中介者模式的核心接口,它定義了同事對(duì)象注

    2024年04月26日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包