• java-桥接模式


    一 概念

        桥接模式用于把抽象化与实现化解耦,使得两者可以独立变化。
    这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
    这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。

        实现要点:实现化类继承某个统一接口(桥接口),抽象化持有该接口的引用。

    二 实例

    比如我们A站点有A1,A2,A3, B站点有B1,B2,B3 我们要从A去到B

    桥接口(实现化角色(Implementor)):Qiao

    1 public interface Qiao {
    2     //目的地B
    3     void targetAreaB();
    4 }


    目的地B1,B2,B3(具体实现化角色)
    
    
    1  /**
     2  * 目的地B1
     3  */
     4 public class AreaB1 implements Qiao {
     5 
     6     @Override
     7     public void targetAreaB() {
     8         System.out.println("我要去B1");
     9     }
    10 
    11 }
    12 
    13 /**
    14  * 目的地B2
    15  */
    16 public class AreaB2 implements Qiao {
    17 
    18     @Override
    19     public void targetAreaB() {
    20         System.out.println("我要去B2");
    21     }
    22 
    23 }
    24 
    25 /**
    26  * 目的地B3
    27  */
    28 public class AreaB3 implements Qiao {
    29 
    30     @Override
    31     public void targetAreaB() {
    32         System.out.println("我要去B3");
    33     }
    34 
    35 }
    
    

    抽象来源地A(抽象化角色)
    1 public abstract class AreaA {
    2     //引用桥接口
    3     Qiao qiao;
    4     //来源地
    5     abstract void fromAreaA();
    6 }

    来源地A1,A2,A3(修正抽象化角色)
    
    
    1 /**
     2  * 来源地A1
     3  */
     4 public class AreaA1 extends AreaA {
     5 
     6     @Override
     7     void fromAreaA() {
     8         System.out.println("我来自A1");
     9     }
    10     
    11 }
    12 
    13 /**
    14  * 来源地A2
    15  */
    16 public class AreaA2 extends AreaA {
    17 
    18     @Override
    19     void fromAreaA() {
    20         System.out.println("我来自A2");
    21     }
    22 
    23 }
    24 
    25 /**
    26  * 来源地A3
    27  */
    28 public class AreaA3 extends AreaA {
    29 
    30     @Override
    31     void fromAreaA() {
    32         System.out.println("我来自A3");
    33     }
    34 
    35 }
     
     
    测试类
    1 public class Clienter {
    2     public static void main(String[] args) {
    3         AreaA a = new AreaA2();
    4         a.qiao = new AreaB3();
    5         a.fromAreaA();
    6         a.qiao.targetAreaB();
    7     }
    8 }

    输出结果
    我来自A2
    我要去B3

      注意点:

        1、定义一个桥接口,使其与一方绑定,这一方的扩展全部使用实现桥接口的方式,这就是被调用方。

        2、定义一个抽象类,来表示另一方,在这个抽象类内部要引入桥接口,而这一方的扩展全部使用继承该抽象类的方式,者一方是调用方。


    三 特点
    1. 分离抽象部分和实现部分
    桥梁模式分离了抽象部分和实现部分,从而极大的提高了系统的灵活性。让抽象部分和实现部分独立出来,分别定义接口,这有助于对系统进行分层,从而产生更好的结构化的系统。

    2. 更好的拓展
    桥梁模式使得抽象部分和实现部分可以分别独立的扩展,而不会相互影响,从而大大提高了系统的可扩展性。
  • 相关阅读:
    VC项目配置基础 (VC6.0 和VC2005)
    使用VC2005编译静态应用程序的方法
    静态库中使用MFC编译出现错误,共享DLL使用则正常的解决方案
    从来没有天才 靠自己创造未来——Leo鉴书(29)
    __super in MFC
    c:forEach传递参数(jsp)
    :first选择器(jQuery)
    prev ~ siblings选择器(jQuery)
    windbg 基础命令实战
    查看Linux版本系统信息方法汇总
  • 原文地址:https://www.cnblogs.com/hup666/p/10591313.html
Copyright © 2020-2023  润新知