桥接模式
传统设计问题:每次添加新的类型,都需要重新添加子类
1、扩展性问题(类爆炸)
2、违反了单一职责原则
桥接模式:
1、将实现与抽象放在两个不同的类层次独立起来
2、结构型设计模式
3、基于类的最小设计原则,通过封装聚合和继承等行为让不同类承担不同职责
例子
Brand
public interface Brand {
void open();
void close();
void call();
}
HuaWei
public class HuaWei implements Brand {
@Override
public void open() {
System.out.println("华为开机");
}
@Override
public void close() {
System.out.println("华为关机");
}
@Override
public void call() {
System.out.println("华为打电话");
}
}
Phone
public abstract class Phone {
//聚合手机品牌
private Brand brand;
public Phone(Brand brand) {
super();
this.brand = brand;
}
protected void open() {
this.brand.open();
}
protected void close() {
this.brand.close();
}
protected void call() {
this.brand.call();
}
}
FoldType
public class FoldType extends Phone {
public FoldType(Brand brand) {
super(brand);
}
@Override
protected void open() {
super.open();
System.out.println("折叠样式");
}
@Override
protected void close() {
super.close();
System.out.println("折叠样式");
}
@Override
protected void call() {
super.call();
System.out.println("折叠样式");
}
}
Client
public class Client {
public static void main(String[] args) {
//手机 = 品牌 + 样式
Phone phone = new FoldType(new HuaWei());
phone.open();
phone.call();
phone.close();
}
}