Java设计模式:桥梁模式解决的痛点例子(2)
  TEZNKK3IfmPf 2023年11月14日 19 0

通常情况一台电视机配置一种对应的遥控器,但是这种情况下,每当有一种新的电视机后,就不得不增加一种新的遥控器。因为电视机模块在变化,遥控器模块中控制逻辑相对文档。

现在引入Java设计模式中的桥接模式,解决这种情况。

public interface TV {
    void on();

    void off();

    void setChannel(int number);
}

 

/**
 * 遥控器抽象。
 */
public abstract class RemoteControl {
    private TV tv;

    public RemoteControl(){

    }

    public RemoteControl(TV tv) {
        this.tv = tv;
    }

    public void setTv(TV tv) {
        this.tv = tv;
    }

    public void on() {
        tv.on();
    }

    public void off() {
        tv.off();
    }

    public void setChannel(int number) {
        tv.setChannel(number);
    }
}

 

遥控器的抽象实现:

public class SomeRemoteControl extends RemoteControl{
    public SomeRemoteControl() {
        super();
    }
}

 

一种叫做CH的电视机:

public class CHTV implements TV {
    private String name = "CH牌电视机";

    @Override
    public void on() {
        System.out.println(name + " 打开");
    }

    @Override
    public void off() {
        System.out.println(name + " 关闭");
    }

    @Override
    public void setChannel(int number) {
        System.out.println(name + " 切换频道" + number);
    }
}

 

一种叫做ZP的电视机:

public class ZPTV implements TV{
    private String name="ZP牌电视机";

    @Override
    public void on() {
        System.out.println(name+" 打开");
    }

    @Override
    public void off() {
        System.out.println(name+" 关闭");
    }

    @Override
    public void setChannel(int number) {
        System.out.println(name+" 切换频道"+number);
    }
}

 

测试:

        RemoteControl control = new SomeRemoteControl();

        TV chTv = new CHTV();
        control.setTv(chTv);
        control.on();
        control.setChannel(1);
        control.off();

        ZPTV zptv = new ZPTV();
        control.setTv(zptv);
        control.on();
        control.setChannel(2);
        control.off();

 

输出:

CH牌电视机 打开
CH牌电视机 切换频道1
CH牌电视机 关闭
ZP牌电视机 打开
ZP牌电视机 切换频道2
ZP牌电视机 关闭
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   25天前   51   0   0 java
  TEZNKK3IfmPf   2024年05月31日   55   0   0 java
TEZNKK3IfmPf