<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                橋接(Bridge)模式是結構型模式的一種,而策略(strategy)模式則屬于行為模式。以下是它們的UML結構圖。 橋梁模式: ![這里寫圖片描述](https://box.kancloud.cn/2016-04-20_57175853e617e.jpg "") 策略模式: ![這里寫圖片描述](https://box.kancloud.cn/2016-04-21_571890ecc9f8f.jpg "") 在橋接模式中,Abstraction通過聚合的方式引用Implementor。 ### 舉一個例子: **策略模式:**我要畫圓,要實心圓,我可以用solidPen來配置,畫虛線圓可以用dashedPen來配置。這是strategy模式。 **橋接模式:**同樣是畫圓,我是在windows下來畫實心圓,就用windowPen+solidPen來配置,在unix下畫實心圓就用unixPen+solidPen來配置。如果要再windows下畫虛線圓,就用windowsPen+dashedPen來配置,要在unix下畫虛線圓,就用unixPen+dashedPen來配置。 畫圓方法中,策略只是考慮算法的替換,而橋接考慮的則是不同平臺下需要調用不同的工具,接口只是定義一個方法,而具體實現則由具體實現類完成。 ### 區別: 橋接模式:不僅Implementor具有變化(ConcreteImplementor),而且Abstraction也可以發生變化(RefinedAbstraction),而且兩者的變化是完全獨立的,RefinedAbstraction與ConcreateImplementor之間松散耦合,它們僅僅通過Abstraction與Implementor之間的關系聯系起來。強調Implementor接口僅提供基本操作,而Abstraction則基于這些基本操作定義更高層次的操作。 策略模式:并不考慮Context的變化,只有算法的可替代性。強調Strategy抽象接口的提供的是一種算法,一般是無狀態、無數據的,Context簡單調用這些算法完成其操作。 所以相對策略模式,橋接模式要表達的內容要更多,結構也更加復雜。 橋接模式表達的主要意義其實是接口隔離的原則,即把本質上并不內聚的兩種體系區別開來,使得它們可以松散的組合,而策略在解耦上還僅僅是某一個算法的層次,沒有到體系這一層次。 從結構圖中可以看到,策略模式的結構是包容在橋接模式結構中的,Abstraction與Implementor之間就可以認為是策略模式,但是橋接模式一般Implementor將提供一系列的成體系的操作,而且Implementor是具有狀態和數據的靜態結構。而且橋接模式Abstraction也可以獨立變化。 參考:[http://c610367182.iteye.com/blog/1965668](http://c610367182.iteye.com/blog/1965668) [http://www.blogjava.net/wangle/archive/2007/04/25/113545.html](http://www.blogjava.net/wangle/archive/2007/04/25/113545.html)
                  <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>

                              哎呀哎呀视频在线观看