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!");
}
}
组合模式用于将多个对象组合在一起进行操作的场景,常用于表示树形结构,例如二叉树、树、图等。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。