首页 理论教育 桥接模式和组合模式应用实例

桥接模式和组合模式应用实例

时间:2023-10-16 理论教育 版权反馈
【摘要】:1)桥接模式桥接模式就是把抽象部分与实现部分分离,使它们可以各自独立地变化,如图10-5所示。2)组合模式组合模式又叫部分-整体模式,其关键是一个抽象类,它既可以代表图元,又可以代表图元的容器。");}}组合模式用于将多个对象组合在一起进行操作的场景,常用于表示树形结构,例如二叉树、树、图等。

桥接模式和组合模式应用实例

1)桥接模式

桥接模式就是把抽象部分与实现部分分离,使它们可以各自独立地变化,如图10-5所示。

图10-5 桥接模式示例

首先,定义接口

 public interface Sourceable{

  public void method();

 }

其次,分别定义两个实现类:

 public class SourceSub1implements Sourceable{

  @Override

  public void method(){

     System.out.println("this is the first sub!");

  }

 }

 public class SourceSub2implements Sourceable{

  @Override

  public void method(){

    System.out.println("this is the second sub!");

  }

 }

最后,定义一个桥,有Sourceable的一个实例:

 public abstract class Bridge{

  private Sourceable source;

  public void method(){

    source.method();

 }

  public Sourceable getSource(){

    return source;

  }

  public void setSource(Sourceable source){

    this.source=source;

  }

 }

 public class MyBridge extends Bridge{

  public void method(){

    getSource().method();

  }

 }

测试:

 public class BridgeTest{

  public static void main(String[]args){

    Bridge bridge=new MyBridge();

    /*调用第一个对象*/

    Sourceable source1=new SourceSub1();

    bridge.setSource(source1);

    bridge.method();

    /*调用第二个对象*/

    Sourceable source2=new SourceSub2();

    bridge.setSource(source2);

    bridge.method();

  }

 }

输出结果:

 this is the first sub!(www.xing528.com)

 this is the second sub!

这样,就通过对Bridge类的调用,实现了对接口Sourceable的实现类SourceSub1和SourceSub2的调用。

2)组合模式

组合模式又叫部分-整体模式,其关键是一个抽象类,它既可以代表图元,又可以代表图元的容器。使用组合模式,在处理类似树形结构的问题时比较方便,如图10-6所示。

图10-6 组合模式示例

代码示例如下:

 public class TreeNode{

  private String name;

  private TreeNode parent;

  private Vector<TreeNode>children=new Vector<TreeNode>();

  public TreeNode(String name){

    this.name=name;

  }

  public String getName(){

    return name;

  }

  public void setName(String name){

    this.name=name;

  }

  public TreeNode getParent(){

    return parent;

  }

  public void setParent(TreeNode parent){

    this.parent=parent;

  }

  //添加孩子节点

  public void add(TreeNode node){

    children.add(node);

  }

  //删除孩子节点

  public void remove(TreeNode node){

    children.remove(node);

  }

  //取得孩子节点

  public Enumeration<TreeNode>getChildren(){

    return children.elements();

  }

 }

 public class Tree{

  TreeNode root=null;

  public Tree(String name){

    root=new TreeNode(name);

  }

  public static void main(String[]args){

    Tree tree=new Tree("A");

    TreeNode nodeB=new TreeNode("B");

    TreeNode nodeC=new TreeNode("C");

    nodeB.add(nodeC);

    tree.root.add(nodeB);

    System.out.println("build the tree finished!");

  }

 }

组合模式用于将多个对象组合在一起进行操作的场景,常用于表示树形结构,例如二叉树、树、图等。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈