大话设计模式-桥接模式

使用场景:桥接模式的核心意图就是将这些实现独立出来,让它们各自地变化。这就使得每种实现的变化不会影响其他实现,从而达到应对变化的目的。

多用聚合,少用继承

大话设计模式-桥接模式_第1张图片

1. 手机软件抽象类、通讯录类、游戏类

package com.hj.designPattern.structural.bridge;


public abstract class Software {
    public abstract void softrun();
}


package com.hj.designPattern.structural.bridge;


public class GameSoft extends Software{
    @Override
    public void softrun() {
        System.out.println("游戏软件运行");
    }
}


package com.hj.designPattern.structural.bridge;


public class AddresSoft extends Software{
    @Override
    public void softrun() {
        System.out.println("通讯录软件运行");
    }
}

2. 手机品牌类、华为类、小米类

package com.hj.designPattern.structural.bridge;


public class PhoneBrand {
    protected Software software;

    PhoneBrand(Software software){
        this.software = software;
    }
    public void run() {
        software.softrun();
    }
}


package com.hj.designPattern.structural.bridge;


public class Huawei extends PhoneBrand{
    Huawei(Software software) {
        super(software);
    }

    @Override
    public void run() {
        System.out.print("华为");
        super.run();
    }
}


package com.hj.designPattern.structural.bridge;


public class Xiaomi extends PhoneBrand{
    Xiaomi(Software software) {
        super(software);
    }

    public void run(){
        System.out.print("小米");
        super.run();
    }
}

3. 测试类

package com.hj.designPattern.structural.bridge;


public class BridgeTest {
    public static void main(String[] args) {
        AddresSoft addresSoft = new AddresSoft();
        GameSoft gameSoft = new GameSoft();

        Huawei huaweiAddress = new Huawei(addresSoft);
        huaweiAddress.run();
        Huawei huaweiGame = new Huawei(gameSoft);
        huaweiGame.run();

        Xiaomi xiaomiAddress = new Xiaomi(addresSoft);
        xiaomiAddress.run();
        Xiaomi xiaomiGame = new Xiaomi(gameSoft);
        xiaomiGame.run();

    }
}

你可能感兴趣的:(设计模式,设计模式,桥接模式)