- 处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立法人扩展在抽象层建立关联。
没有桥接模式的小栗子
package com.principle.bridge;
public interface Computer {
void sale();
}
class Desktop implements Computer {
@Override
public void sale() {
System.out.println("销售台式机");
}
}
class Laptop implements Computer {
@Override
public void sale() {
System.out.println("销售笔记本");
}
}
class Pad implements Computer {
@Override
public void sale() {
System.out.println("销售平板");
}
}
class LenovoDesktop extends Desktop{
@Override
public void sale() {
System.out.println("销售联想台式机");
}
}
class LenovoLaptop extends Laptop{
@Override
public void sale() {
System.out.println("销售联想笔记本");
}
}
class LenovoPad extends Pad{
@Override
public void sale() {
System.out.println("销售联想平板");
}
}
class ShenzhouDesktop extends Desktop{
@Override
public void sale() {
System.out.println("销售神州台式机");
}
}
class ShenzhouLaptop extends Laptop{
@Override
public void sale() {
System.out.println("销售神州笔记本");
}
}
class ShenzhouPad extends Pad{
@Override
public void sale() {
System.out.println("销售神州平板");
}
}
class DellDesktop extends Desktop{
@Override
public void sale() {
System.out.println("销售戴尔台式机");
}
}
class DellLaptop extends Laptop{
@Override
public void sale() {
System.out.println("销售戴尔笔记本");
}
}
class DellPad extends Pad{
@Override
public void sale() {
System.out.println("销售戴尔平板");
}
}
TIM截图20190421204016.png
使用桥接模式的小栗子:
package com.principle.bridge;
public interface Brand {
void sale();
}
class Lenove implements Brand {
@Override
public void sale() {
System.out.println("销售联想电脑");
}
}
class Dell implements Brand {
@Override
public void sale() {
System.out.println("销售戴尔电脑");
}
}
package com.principle.bridge;
public class Computer2 {
protected Brand brand;
public Computer2(Brand brand) {
this.brand = brand;
}
public void sale() {
brand.sale();
}
}
class Desktop2 extends Computer2 {
public Desktop2(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
System.out.println("销售台式机");
}
}
class Laptop2 extends Computer2 {
public Laptop2(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
System.out.println("销售笔记本");
}
}
package com.principle.bridge;
public class Client {
public static void main(String[] args) {
Computer2 computer2=new Laptop2(new Lenove());
computer2.sale();
}
}
结果打印:
销售联想电脑
销售笔记本
TIM截图20190421214737.png
桥接模式总结:
- 桥接模式可以取代多层继承的方案。多层继承违背了单一职责原则,复用性较差,类的个数也非常多。桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。
- 桥接模式极大地提高了系统可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合开闭原则。












网友评论