设计模式——桥接模式(Bridge模式)
基本介绍
- 桥接模式(Bridge模式):将实现与抽象放在两个不同的类层次中,使两层次可以独立改变
- 是一种结构型设计模式
- 说白了就是有多个维度的变化,这样的组合关系如果按照传统的方式会导致类爆炸,所以需要将两个维度抽象出来,然后让其通过对象进行组合,来减少类的创建
用手机来举例
当前有两个维度:1. 品牌; 2. 样式
品牌:小米 华为 Vivo等
手机样式:直板机、滑盖机、翻盖机等
先定义品牌维度接口
public interface Brand {
// 品牌口号
String brandVoice();
}
定义一个品牌小米
public class Xiaomi implements Brand {
@Override
public String brandVoice() {
return "为发烧而生...";
}
}
在定义样式接口
public interface PhoneStyle {
// 手机样式
String style();
}
定义电话类
public abstract class Phone {
//组合品牌
private Brand mBrand;
//构造器
public Phone(Brand mBrand) {
this.mBrand = mBrand;
}
protected void open(){
this.mBrand.brandVoice();
System.out.println("phone open");
}
protected void close(){
this.mBrand.brandVoice();
System.out.println("phone close");
}
protected void call(){
this.mBrand.brandVoice();
System.out.println("phone call");
}
}
定义具体的Phone类
//折叠式手机类,继承抽象类Phone
public class FoldedPhone extends Phone implements PhoneStyle {
//构造器
public FoldedPhone(Brand mBrand) {
super(mBrand);
}
public void open(){
super.open();
style();
}
public void close(){
super.close();
style();
}
public void call(){
super.call();
style();
}
@Override
public String style() {
return "折叠式手机";
}
}
使用
public class Client {
public static void main(String[] args){
//获取折叠式手机(样式+品牌)
Phone phone1 = new FoldedPhone(new Xiaomi());
phone1.open();
phone1.call();
phone1.close();
}
}