1.没有使用桥接模式的案例:
如上图所示:电脑接口下面有三个子类分别是台式、笔记本、平板。但是他们三个下面又有好多子类,最底层记得子类中有好多是重复的。比如:联想台式。联想笔记本、联想平板都是联想电脑但是有三个子类。这样的话,当新添加一个品牌或者电脑形式的话就会添加好多的子类。导致类迅速膨胀。
导致上述问题的原因是:子类违背了类单一职责的原理 决定类的因素有两种就是电脑形式和品牌
如何解决此问题:就是让类的职责单一化 ,定义一个电脑形式类,再定义一个电脑品牌类,再用一个第三方类将上述两个类连接起来。 看下面类图
Computer类将电脑的形式类和品牌类连接起来
下面是代码
public class Bridge {
public static void main(String[] args) {
Brand brand = new Lenovo();
Computer c =new Labtop(brand);
c.sale();
}
}
class Computer{
Brand brand;
public Computer(Brand brand) {
this.brand = brand;
}
protected void sale() {
brand.sale();
}
}
interface Brand{
public void sale() ;
}
//品牌定义
/**
* 联想定义
*/
class Lenovo implements Brand{
@Override
public void sale() {
System.out.print("联想品牌");
}
}
class Dell implements Brand{
@Override
public void sale() {
System.out.print("戴尔品牌");
}
}
//电脑形式定义
class Desktop extends Computer{
public Desktop(Brand brand) {
super(brand);
}
protected void sale() {
super.sale();
System.out.println("台式电脑");
}
}
class Labtop extends Computer{
public Labtop(Brand brand) {
super(brand);
}
protected void sale() {
super.sale();
System.out.println("笔记本电脑");
}
}