设计模式——桥接模式

场景,我们需要给不同的电视厂商,比如长虹、TCL、三星等等生产电视遥控器。他们提供各自电视机遥控功能的实现,并且遵循一样的标准。

172843_q4yS_258106.png

我们制作一个长虹的遥控器,选择最直接的方式,继承长虹类,然后利用长虹类提供的方法,实现遥控器功能。

在这个遥控器中,我们提供了新功能,比如

1)将开和关放在一个按钮

2)下一个频道

3)上一个频道

public class CHTvControl extends CHControl implements TvControl{
	private static int ch=0;
	private static boolean ison=false;
	public void Onoff()
	{
		if(ison)
		{
			ison=false;
			super.Off();
		}else{
			ison=true;
			super.On();
		}
	}
	public void nextChannel()
	{
		ch++;
		super.setChannel(ch);
	}
	public void preChannel()
	{
		ch--;
		if(ch<0)
		{
			ch=200;
		}
		super.setChannel(ch);
	}

}

恰好,这个遥控器方案跟海尔要求的也一样。按照这种继承的方案,虽然功能一样,可是还是不得不继承海尔Control,写几乎一模一样的实现类。

212418_bApJ_258106.png

慢慢这个生产遥控器的生意越来越红火,连三星和TCL也让我们生产他们的遥控器了。但是他们有新需求,TCL要新功能A、B、C,三星需要新功能A、B、D。没过多久,海尔跟TCL也要求有A、B、C功能的遥控器。

感觉不对劲,好像做的好多重复开发。这个狗血的故事,兜了那么远,主角终于出场了...

通过桥接模式,能否更好的解决这个问题呢?

思路:

不用继承,改用持有。

213956_NoYC_258106.png

转载于:https://my.oschina.net/gaohongtian/blog/491584

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值