<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                **定義**:將抽象和實現解耦,使得兩者之間可以獨立的變化。 ![](https://box.kancloud.cn/2016-06-06_5755340d6b018.jpg) Abstract抽象化角色 ---|主要職責是定義出該角色的行為,同時保存一個對實現化角色的引用。該角色一般是抽象類 Implementor實現化角色 ---|他是接口或者抽象類,定義角色必須的行為和屬性 RefinedAbstraction修正抽象化角色 ---|它引用實現化角色對抽象化角色進行修正 ConcreteImplementor具體實現化角色 ---|它實現接口或抽象類定義的方法和屬性 ------抽象角色引用實現角色,或者說抽象角色的部分實現是引用實現角色來完成的。 橋梁模式使用了類間的聚合關系、繼承、覆寫等常用功能 ~~~ public class BridgeTest { public static void main(String[] args) { //定義一個實現化角色 Implementor imp = new ConcreteImplementor1(); //定義一個抽象化角色 Abstract abs = new RefinedAbstraction(imp); abs.request(); } } /** * 實現化角色 * 定義要實現的方法 * @author admin * */ interface Implementor{ //基本方法 public void doSomething(); public void doAnything(); } /** * 具體實現化角色 * @author admin */ class ConcreteImplementor1 implements Implementor{ @Override public void doSomething() { System.out.println("具體實現化1,doSomething"); } @Override public void doAnything() { System.out.println("具體實現化1,doAnything"); } } /** * 具體實現化角色 * @author admin */ class ConcreteImplementor2 implements Implementor{ @Override public void doSomething() { System.out.println("具體實現化2,doSomething"); } @Override public void doAnything() { System.out.println("具體實現化2,doAnything"); } } /** * 抽象角色,定義該角色的行為,保存一個實現化角色的引用 * @author admin * */ abstract class Abstract{ //定義對實現化角色的引用 private Implementor imp; //約束子類必須去實現該構造函數 public Abstract(Implementor imp){ this.imp = imp; } //自身的行為和屬性 public void request(){ this.imp.doSomething(); } //得到實現化角色 public Implementor getImp(){ return this.imp; } } /** * 具體抽象化角色 * @author admin * */ class RefinedAbstraction extends Abstract{ //覆寫構造函數 public RefinedAbstraction(Implementor imp) { super(imp); } //修正父類的行為 @Override public void request() { super.request(); super.getImp().doAnything(); } } ~~~ ## 一個例子: 一個商人,開了兩家公司,一家專門做正規的產品,另一家做能掙錢的(不管正不正規)產品。 因此,當市場上那些可以盈利,他都會立馬轉型去做這個東西。但是公司內部人員不會改變。 如何解決公司在不用改變內部結構的前提下,實現公司的轉型呢?這就需要一個橋梁來連接。 ![](https://box.kancloud.cn/2016-06-06_5755340d87c3a.jpg) ~~~ public class BridgeT { public static void main(String[] args) { //創建產品對象 House house = new House(); //創建出公司對象 Corp houseCorp = new HouseCorp(house); houseCorp.makeMoney(); } } /** * 抽象的公司類, * 定義每個子公司需要實現的方法。 * 同時保存對實現化類的引用 * @author admin */ abstract class Corp{ private Product product; //對實現化類的引用 public Corp(Product product) { this.product = product; } //公司主要的目的是賺錢 public void makeMoney(){ //現生產商品 this.product.beProducted(); //再做銷售 this.product.beSell(); } } /** * 具體的公司實現類,實現對實現化類的引用 * @author admin * */ class HouseCorp extends Corp{ public HouseCorp(Product product) { super(product); } @Override public void makeMoney() { //不該變公司的策略 super.makeMoney(); System.out.println("房地產公司賺大錢了。。。"); } } /** * 抽象類,具體子公司要實現的方法 * @author admin * */ abstract class Product{ //產品銷售 public abstract void beSell(); //產品生產 public abstract void beProducted(); } /** * 具體的產品實現類 * @author admin */ class House extends Product{ @Override public void beSell() { System.out.println("房子是這樣賣出去的..."); } @Override public void beProducted() { System.out.println("房子是這樣生產的..."); } } ~~~ **橋梁模式的優點:** ---|抽象和實現分離 ---|優秀的擴充能力 ---|實現細節對客戶透明。 **橋梁模式的使用場景** ---|不希望或不適用使用繼承的場景 ---|接口或抽象類不穩定的場景 ---|重用性要求較高的場景
                  <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>

                              哎呀哎呀视频在线观看