桥接模式

桥接模式

情景分析,当前有不同品牌,不同样式的手机,有打电话开关机的功能,如和增加样式,品牌最为便捷,如果我们直接加品牌的话意为着要为每个样式里多加一个品牌,加样式的话又要新样式下写手机品牌
我们使用桥接模式

  • 定义桥梁接口Brand,各大品牌实现Brand
  • 定义手机列Phone,Phone聚合Brand并且调用Brand里的手机功能
  • 样式类继承Phone,并重写父类功能方法,加入样式
  • 这样就达到如果要加手机和样式,我们只需要再加一个相应的类就行

Brand

package com.xiaojie.qiaojie;

//接口
public interface Brand {
    void open();
    void close();
    void call();
}

Phone

package com.xiaojie.qiaojie;

public abstract class Phone {
    private Brand brand; //聚合

    public Phone(Brand brand) {
        this.brand = brand;
    }

    public void open(){
        brand.open();
    }

    public void close() {
        brand.close();
    }


    public void call() {
        brand.call();
    }
}

各大品牌手机

package com.xiaojie.qiaojie;

public class Vivo implements Brand{
    @Override
    public void open() {
        System.out.println("Vivo开机");
    }

    @Override
    public void close() {
        System.out.println("Vivo关机");
    }

    @Override
    public void call() {
        System.out.println("Vivo打电话");
    }
}
//--------分界线---------
package com.xiaojie.qiaojie;

public class XiaoMi implements Brand{
    @Override
    public void open() {
        System.out.println("小米开机");
    }

    @Override
    public void close() {
        System.out.println("小米关机");
    }

    @Override
    public void call() {
        System.out.println("小米打电话");
    }
}

各大样式类

package com.xiaojie.qiaojie;

public class FoldedPhone extends Phone{

    public FoldedPhone(Brand brand) {
        super(brand);
    }

    @Override
    public void open() {
        super.open();
        System.out.println("折叠手机");
    }

    @Override
    public void close() {
        super.close();
        System.out.println("折叠手机");
    }

    @Override
    public void call() {
        super.call();
        System.out.println("折叠手机");
    }
}
//--------分界线---------
package com.xiaojie.qiaojie;

public class UpRightPhone extends Phone{

    public UpRightPhone(Brand brand) {
        super(brand);
    }
    @Override
    public void open() {
        super.open();
        System.out.println("直立手机");
    }

    @Override
    public void close() {
        super.close();
        System.out.println("直立手机");
    }

    @Override
    public void call() {
        super.call();
        System.out.println("直立手机");
    }
}

测试类

package com.xiaojie.qiaojie;

public class Client {
    public static void main(String[] args) {
        Phone phone = new FoldedPhone(new XiaoMi());
        phone.open();
        phone.close();
        phone.call();
        Phone phone1 = new FoldedPhone(new Vivo());
        phone1.open();
        phone1.close();
        phone1.call();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值