Java设计模式之桥模式

Java23种设计模式

桥模式用于抽象(abstraction)与实现(implementation)功能的解耦,使复杂的项目逻辑简单化,符合迪米特法则。

需求:小明主业是厨师,同时他也喜欢唱歌,但是我们不想把两个属性写到一起。
  1. 创建歌手接口,里面有唱歌的方法。
public interface Singer {
    void sing();
}
  1. 创建小明唱歌类,里面小明唱了一首我爱祖国。
public class XMSong implements Singer{
    @Override
    public void sing() {
        System.out.print("小明唱了一首我爱祖国!\n");
    }
}
  1. 创建厨师抽象方法,里面包含厨师会用刀的刀工,并且开放做菜的抽象方法让自由发挥。
public abstract class Cooker {
    abstract void cook();
    public void useKnife(){
        System.out.print("厨师会用刀!\n");
    }
}
  1. 创建桥连接类,里面继承了Cooker,也包含Singer的实现类,并且新增一个连接实现类的抽象方法,这样写的原因是现实中singer接口可能有多个方法,所以调用接口方法放倒下一步实现。
public abstract class Bridge extends Cooker{
    private Singer singer;

    public Bridge(Singer singer) {
        this.singer = singer;
    }

    public Singer getSinger() {
        return singer;
    }

    abstract void letSing();
}
  1. 创建小明,实现做菜方法,做大盘鸡,在letSing方法中控制唱歌接口。
public class XiaoMing extends Bridge{

    public XiaoMing(Singer singer) {
        super(singer);
    }

    @Override
    public void letSing() {
        getSinger().sing();
    }
    @Override
    public void cook(){
        System.out.print("小明做了一盘大盘鸡!\n");
    }
}
  1. 测试程序
public class Test {
    public static void main(String[] args) {
        XiaoMing xiaoMing = new XiaoMing(new XMSong());
        xiaoMing.letSing();
        xiaoMing.cook();
        xiaoMing.useKnife();
    }
}

打印结果

小明唱了一首我爱祖国!
小明做了一盘大盘鸡!
厨师会用刀!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值