设计模式的应用场景(10)--桥模式

桥模式

定义:将抽象化与实现化脱耦,使得两者可以独立地变化。也就是在一个软件系统的抽象化和实现化之间使用组合关系而不是继承关系。从而使两者可以独立地变化。

优点:桥模式能提供比继承关系更灵活的功能,当有新的抽象或者实现方式时只需要集成一个抽象类或者一个实现即可。

缺点:如果重新抽象出另外一个类型,则需要修改抽象。

使用时机:当系统需要在它的抽象和实现之间增加更多的灵活性,或者一个对象有多于一个的抽象和实现时,需要桥模式。

小巩的项目需要为汽车管理所建立一个汽车管理的模型,要求对各个汽车制造商生产的各种汽车进行管理。
如果使用多重继承的方法,类的数量会很多,各种汽车和各个制造商的组合会产生很多类。怎么解决这个问题?
把汽车作为抽象类,把制造商变成接口

public abstract class Car {
    public Car(Manufacturer lnkManufacturer) {
        this.lnkManufacturer = lnkManufacturer;
    }

   public void produce() {
		lnkManufacturer.produce();
   }

    /**
     * @directed 
     */
    Manufacturer lnkManufacturer;
}
public class Bus extends Car {
     public Bus(Manufacturer lnkManufacturer) {
        super(lnkManufacturer);
    }
    public void produce() {
		lnkManufacturer.produce();
        System.out.println("的公共汽车");
    }
}
public class Truck extends Car {
    public Truck(Manufacturer lnkManufacturer) {
        super(lnkManufacturer);
    }

    public void produce() {
        lnkManufacturer.produce();
        System.out.println("的货车");
    }
}
public interface Manufacturer {
    void produce();
}

public class Dfmc implements Manufacturer {
    public void produce() {
        System.out.println("二汽制造");
    }
}

public class Faw implements Manufacturer {
    public void produce() {
        System.out.println("一汽制造");
    }
}

如果有新的车型进来,就继承car.java;
如果有新的制造商进来,就实现Manufacturer.java.
下面是客户端调用示例

public class Client {
    public static void main(String[] argv) {
        Car car = new Bus(new Dfmc());
        car.produce();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值