设计模式-桥接模式
将抽象部分与它的实现部分分离,使它们都可以独立地变化
比如我们现在手机上的APP在开发的时候都会开发两个版本,以适配ios和安卓,我们就拿这个来举例
先定义APP的抽象类
public abstract class MobileApp {
abstract String getName();
}
再定义操作系统的抽象类,它聚合了APP
public abstract class MobileSystem {
List<MobileApp> apps = new ArrayList<>();
abstract String getName();
public void addApp(MobileApp app){
apps.add(app);
}
public void displayApps(){
System.out.println(this.getName() + "支持的APP有:");
apps.forEach(app -> System.out.println("\t" + app.getName()));
}
}
然后写ios和安卓的实现类
public class IOS extends MobileSystem {
@Override
String getName() {
return "ios";
}
}
public class Android extends MobileSystem {
@Override
String getName() {
return "安卓";
}
}
再分别给出三种软件的实现类
public class AliPay extends MobileApp {
@Override
String getName() {
return "支付宝";
}
}
public class Wechat extends MobileApp {
@Override
String getName() {
return "微信";
}
}
public class NBA2K extends MobileApp {
@Override
String getName() {
return "NBA 2K";
}
}
使用
public class Demo {
public static void main(String[] args) {
MobileSystem android = new Android();
android.addApp(new AliPay());
android.addApp(new Wechat());
MobileSystem ios = new IOS();
ios.addApp(new AliPay());
ios.addApp(new Wechat());
ios.addApp(new NBA2K());
android.displayApps();
ios.displayApps();
}
}