大话设计模式-桥接模式的实践-手机软件

UML

手机品牌抽象类

/** * 手机品牌抽象类 */
public class HandsetBrand {
    protected String name;
    protected HandsetSoft soft;

    public HandsetBrand(String name) {
        this.name = name;
    }

    /** * 模拟安装软件 * * @param soft */
    public void setSoft(HandsetSoft soft) {
        this.soft = soft;
    }

    /** * 模拟运行软件 */
    public void run() {
        System.out.print(name+"--->");
        soft.run();
    }

}

两个具体的手机品牌

/** * 手机品牌A */
public class HandsetBrandA extends HandsetBrand {

    public HandsetBrandA(String name) {
        super(name);
    }

    @Override
    public void run() {
        super.run();
    }
}

/** * 手机品牌B */
public class HandsetBrandB extends HandsetBrand {
    public HandsetBrandB(String name) {
        super(name);
    }

    @Override
    public void run() {
        super.run();
    }
}

手机软件抽象类

/** * 手机软件抽象类 */
public abstract class HandsetSoft {
    public abstract void run();
}

手机通讯录

/** * 手机通讯录 */
public class HandsetSoftAddressList extends HandsetSoft {
    @Override
    public void run() {
        System.out.println("运行手机通讯录");
    }
}

手机游戏

/** * 手机游戏 */
public class HandsetSoftGame extends HandsetSoft {
    @Override
    public void run() {
        System.out.println("运行手机游戏");
    }
}

测试类

/** * 测试类 */
public class Main {
    public static void main(String[] args) {
        //生成一个具体的手机A
        HandsetBrand a = new HandsetBrandA("小米MIX3");

        //为手机A安装软件
        a.setSoft(new HandsetSoftAddressList());
        //运行刚刚安装的软件
        a.run();

        //为手机A安装软件
        a.setSoft(new HandsetSoftGame());
        //运行刚刚安装的软件
        a.run();


        //生成一个具体的手机B
        HandsetBrand b = new HandsetBrandB("华为P20");

        //为手机B安装软件
        b.setSoft(new HandsetSoftAddressList());
        //运行刚刚安装的软件
        b.run();

        //为手机B安装软件
        b.setSoft(new HandsetSoftGame());
        //运行刚刚安装的软件
        b.run();


    }
}

运行结果

全部评论

相关推荐

10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务