1. 桥接模式的介绍
桥接模式
(Bridge Pattern)属于结构型模式,是用于把抽象化与实现化解耦,使得二者可以独立变化。它通过组合的方式,而不是继承的方式,将抽象和实现的部分连接起来。
桥接模式的四个关键角色:
- 抽象(Abstraction):定义抽象接口,通常包含对实现接口的引用。
- 扩展抽象(Refined Abstraction):对抽象的扩展,可以是抽象类的子类或具体实现类。
- 实现(Implementor):定义实现接口,提供基本操作的接口。
- 具体实现(Concrete Implementor):实现实现接口的具体类。
2. 桥接模式的类图
有一个作为桥接实现的 Cook
接口和实现了Cook
接口的实体类 ChineseCook
、EuropeanCook
。Chef
是一个抽象类,将使用 Cook
的对象。
3. 桥接模式的实现
3.1 创建实现接口
java">package blog;/*** 实现接口*/
public interface Cook {void cook();
}
3.2 创建实现了 Cook 接口的实体桥接实现类
java">package blog;/*** 具体实现*/
public class ChineseCook implements Cook{@Overridepublic void cook() {System.out.println("中餐");}
}
java">package blog;/*** 具体实现*/
public class EuropeanCook implements Cook{@Overridepublic void cook() {System.out.println("西餐");}
}
3.3 使用 Cook 接口创建抽象类 Chef
java">package blog;/*** 抽象接口*/
public abstract class Chef {protected Cook cook;public Chef(Cook cook) {this.cook = cook;}protected abstract void cook();
}
3.4 创建实现了 Chef 抽象类的实体类
java">package blog;/*** 扩展抽象*/
public class AdvancedChef extends Chef{public AdvancedChef(Cook cook) {super(cook);}@Overrideprotected void cook() {cook.cook();}
}
3.5 测试
java">package blog;public class BridgeDemo {public static void main(String[] args) {AdvancedChef chef1 = new AdvancedChef(new ChineseCook());chef1.cook();AdvancedChef chef2 = new AdvancedChef(new EuropeanCook());chef2.cook();}
}