<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國際加速解決方案。 廣告
                ~~~ /* Mediator 中介者模式: 用一個中介對象來封裝一系列的對象交互。 中介這使各對象不需要顯式地相互引用,從而使其耦合松散, 而且可以獨立地改變它們之間的交互。 個人想法:每個對象都有一個中介者對象,發生變化時,通知中介者,由中介者判斷通知其他的對象。 作者: HCLAC */ package Mediator import ( "fmt" ) // 中介者接口 type IMediator interface { Send(string, IColleague) } // 實現中介者接口的基本類型 type Mediator struct { } // 具體的中介者 type ConcreteMediator struct { Mediator colleagues []IColleague } func (m *ConcreteMediator) AddColleague(c IColleague) { if m == nil { return } m.colleagues = append(m.colleagues, c) } func (m *ConcreteMediator) Send(message string, c IColleague) { if m == nil { return } for _, val := range m.colleagues { if c == val { continue } val.Notify(message) } } func NewConcreteMediator() *ConcreteMediator { return &ConcreteMediator{} } // 合作者接口 type IColleague interface { Send(string) Notify(string) } // 實現合作者接口的基本類型 type Colleague struct { mediator IMediator } // 具體合作者對象A type ConcreteColleageA struct { Colleague } func (c *ConcreteColleageA) Notify(message string) { if c == nil { return } fmt.Println("ConcreteColleageA get message:", message) } func (c *ConcreteColleageA) Send(message string) { if c == nil { return } c.mediator.Send(message, c) } func NewConcreteColleageA(mediator IMediator) *ConcreteColleageA { return &ConcreteColleageA{Colleague{mediator}} } // 具體合作者對象B type ConcreteColleageB struct { Colleague } func (c *ConcreteColleageB) Notify(message string) { if c == nil { return } fmt.Println("ConcreteColleageB get message:", message) } func (c *ConcreteColleageB) Send(message string) { if c == nil { return } c.mediator.Send(message, c) } func NewConcreteColleageB(mediator IMediator) *ConcreteColleageB { return &ConcreteColleageB{Colleague{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>

                              哎呀哎呀视频在线观看