Bridge模式的优点:
1. 分离接口和实现部分。一个实现不必不变得邦定在一个接口上。抽象类的实现可以在运行的时刻进行配置,一个对象甚至可以在运行的时候改变它的实现。
2. 提高可扩充性 你可以独立地对Abstraction和Implementor层次结构进行扩充。
3. 实现细节对客户的透明 你可以对可以隐藏实现细节。
代码示例:
Abstraction:代码
package bridge;
public abstract class Image{
protected ImageImp imptouse;
public void setImageImp(ImageImp ip){
imptouse=ip;
}
public abstract void method(String str);
}
RefinedAbstraction(BMPImg)代码:
package bridge;
public class BMPImage extends Image{
public void method(String str){
String s1=str+"\nBMP Image";
this.imptouse.doPaint(s1);
}
}
Implementor(ImageImp)代码:
package bridge;
public interface ImageImp{
public void doPaint(String str);
}
ConcreteImplementor(UnixImp)代码:
package bridge;
public class UnixImp implements ImageImp{
public void doPaint(String str){
System.out.println(str+" at UnixOS!");
}
}
客户端代码:
package bridge;
public class Client{
public static void main(String[] args){
ImageImp winimp = new WinImp();
BMPImage bmp = new BMPImage();
bmp.setImageImp(winimp);
bmp.method("Paint ==>");
ImageImp uniximp = new UnixImp();
bmp.setImageImp(uniximp);
bmp.method("Paint ==>");
}
}
结论:Bridge模式有效的使抽象类中一个具体方法的实现可以独立变化,与工厂方法不同的实,其具体的方法实现可以被共享。
本文出自 “凌辉” 博客,请务必保留此出处http://tianli.blog.51cto.com/190322/34027