处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。常见使用场景:JDBC驱动程序。
现在有一个场景:需要实现销售各种类型,品牌的电脑,我们如果按照如下的代码来写,还只是写了联想的,还有更多其他品牌的没写出来。这样的话非常繁琐。于是我们可以采用桥接模式。
public interface Computer1 {
void sale();
}
class Desktop1 implements Computer1{
@Override
public void sale() {
System.out.println("销售台式机");
}
}
class LapTop1 implements Computer1{
@Override
public void sale() {
System.out.println("销售笔记本");
}
}
class Pad implements Computer1{
@Override
public void sale() {
System.out.println("销售平板电脑");
}
}
class LenovoDesktop extends Desktop1{
@Override
public void sale() {
System.out.println("销售联想台式机");
}
}
class LenovoLapTop extends LapTop1{
@Override
public void sale() {
System.out.println("销售联想笔记本");
}
}
class LenovoPad extends Pad{
@Override
public void sale() {
System.out.println("销售联想平板电脑");
}
}
.......
使用桥接模式:
品牌类
public interface Brand {
void sale();
}
class Lenovo implements Brand{
@Override
public void sale() {
System.out.println("销售联想牌电脑");
}
}
class Asus implements Brand{
@Override
public void sale() {
System.out.println("销售华硕牌电脑");
}
}
机型类,持有品牌对象
public class Computer {
protected Brand brand;
public Computer(Brand brand) {
this.brand = brand;
}
public void sale(){
brand.sale();
}
}
class Desktop extends Computer{
public Desktop(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
System.out.println("销售台式机");
}
}
class LapTop extends Computer{
public LapTop(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
System.out.println("销售笔记本");
}
}
测试类
public class Test {
public static void main(String[] args) {
Computer computer = new LapTop(new Lenovo());
computer.sale();
}
}
这样再增加一个品牌,就新增一个实现品牌的类就行,不用增加繁琐的代码。