标签:todo rate 网上 int 操作 不同 调用 独立 lan
从UML图看,这里的抽象类和接口是聚合关系,就是调用和被调用的关系;RefinedAbstraction的父类聚合了接口,RefinedAbstraction调用接口的具体实现
代码示例
定义Brand接口以及各个品牌的具体实现
//定义接口
public interface Brand {
public void call();
}
//Vivo实现
class Vivo implements Brand{
@Override
public void call() {
// TODO Auto-generated method stub
System.out.println("Vivo 开机");
}
}
//HuaWei实现
class HuaWei implements Brand{
@Override
public void call() {
// TODO Auto-generated method stub
System.out.println("HuaWei 开机");
}
}
//XiaoMI实现
class XiaoMI implements Brand{
@Override
public void call() {
// TODO Auto-generated method stub
System.out.println("XiaoMI 开机");
}
}
编写桥梁类即抽象类Phone
public abstract class Phone {
//聚合Brand接口
private Brand brand;
//构造器:被子类调用
public Phone(Brand brand) {
this.brand = brand;
}
//定义手机功能,调用品牌的具体实现
//注意该方法应该定义为protected,因为该方法还没有完成,还需要子类的填充,所以不能被调用
protected void call() {
brand.call();
}
}
举例一个继承Phone的子类Folder样式手机
public class FolderPhone extends Phone{
//调用父类构造器,完成品牌手机的聚合
public FolderPhone(Brand brand) {
super(brand);
}
//重写父类的call,调用父类的call方法,即保留品牌手机的操作,再加上样式的特点,完成手机的功能实现
public void call() {
super.call();
System.out.println("添加了折叠手机的特色");
}
}
而client调用时,只需要指定类型创建
//指定折叠手机中的vivo品牌,便完成一个完整的手机
Phone phone = new FolderPhone(new Vivo());
以上则通过桥接模式完成一个手机功能,整个系统具有扩展性
JDBC在使用Driver获取Connection中使用了桥接模式,但是和我们所说的结构有所不同,DriverManager不是一个抽象,但他使用的桥接模式的大致结构。
标签:todo rate 网上 int 操作 不同 调用 独立 lan
原文地址:https://www.cnblogs.com/JIATCODE/p/13068225.html