桥接模式:实现系统可能有多角度分类,每一种分类都有可能变化,那么把这多种角度分离出来让他们独立变化,减少他们之间的耦合
优先使用合成/聚合复用原则,而不是类继承 (合成/聚合:引用对方的接口,对方传递进来)
/**
* 桥接模式
* 关键:
* 例子:手机软件 和 手机厂商,他们的关系是聚合关系,分别是一个抽象类,手机厂商拥有手机软件的引用
* @author zbl
*
*/
public class BridgeCustomer {
public static void main(String[] args) {
PhoneFactory factory = new ConcretePhoneFactory();
SoftWare softWare = new ConcreteSoftWare();
factory.installationSoftWare(softWare);
factory.run();
}
}
//手机厂商
interface PhoneFactory{
public void installationSoftWare(SoftWare softWare);
public void run();
}
//手机软件
interface SoftWare{
public void run();
}
//具体手机厂商
class ConcretePhoneFactory implements PhoneFactory{
private SoftWare software;
@Override
public void installationSoftWare(SoftWare softWare) {
this.software = softWare;
}
@Override
public void run() {
software.run();
}
}
//具体手机软件
class ConcreteSoftWare implements SoftWare{
@Override
public void run() {
System.out.println("打开支付宝");
}
}