码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式——桥接模式

时间:2015-08-12 23:47:01      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:

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

技术分享

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

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

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,写几乎一模一样的实现类。

技术分享

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

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

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

思路:

不用继承,改用持有。

技术分享

设计模式——桥接模式

标签:

原文地址:http://my.oschina.net/gaohongtian/blog/491584

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!