bridge桥接模式

      bridge桥接模式的目的和decorator装饰器模式是一样的,都是避免过多的子类,只是它们的实现的方法有所不同,桥接模式采用聚合的方式来实现。要对类的功能进行扩展,可以修改现有的代码来做,但是如果一个父类的n个子类都要该功能,那么就得修改n次,不但工作量大而且重复代码量很多。这也违反了面向对象的开放/封闭原则(对扩展来说是开放的,对修改来说是封闭的)。在前面的《decorator装饰器模式》中提到的“父类的n个子类的都要派生出子类并实现这些功能”,这种方来处理但然也是不合理的。
       bridge桥接模式中“将抽象化与实现化脱偶,使得二者可以独立地变化”的意思,就是利用聚合的方法对,在新类中对原接口进行封装,并实现特定的功能,用户只要向该新类传进原接口的一个子类的引用,对原接口对象进行实例化,用户就可以得到某些的应用。如果需要就对添加的类进行任何的改变,只要修改该新添加的类就行了。这就是独立地变化的体现。     

      在decorator装饰器模式中,如果原父类的方法较多,那么Decorator继承过来的函数也就会很多。使用桥接模式就不存在这种情况。也就是说如果只想对目的类的某个或几个方法,用桥接模式就行了,代码量比较少。如果想像原类的一样使用新类,就用装饰器模式,但是可能会带来不必要的麻烦。

public interface Info{      
   public String read();      
   public void save();      
   public void setStr(String str);      
   public String getStr();      
}      
public class FileInfo implements Info{      
   protect String str;      
   public void read(){/*...*/}      
   public void save(){/*...*/}      
   public void setStr(String str){this.str=str;}      
   public String getStr(){return str;}      
}      
public class NetInfo implements Info{      
   protect String str;      
   public void read(){/*...*/}      
   public void save(){/*...*/}      
   public void setStr(String str){this.str=str;}      
   public String getStr(){return str;}      
}      
public interface Bridge{      
   public void save();      
}      
public class XmlDocument implements Bridge{      
   private Info info;      
   public XmlDocument(Info info){this.info = info;}      
   public void save(){xml();info.save();}      
   public void xml(){String str=info.read();/*对str进行处理...*/info.setStr(str);}      
}      
public class EncrypDocument implements Bridge{      
   private Info info;      
   public EncrypDocument(Info info){this.info = info;}      
   public void save(){encryp();info.save();}      
   public void encryp(){String str=info.read();/*对str进行处理...*/info.setStr(str);}   

   
}      
public class Main{      
   public static void main(String args[]){      
      Info info = new NetInfo();      
      Bridge b = new XmlDocument(info);      
      b.save();      
   }      
} 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值