当前位置: 首页 > news >正文

网站网站程序架设0基础网站建设教程视频教程

网站网站程序架设,0基础网站建设教程视频教程,app大全免费软件排行榜,上海网站建设y021~犬#x1f4f0;余~ “我欲贱而贵#xff0c;愚而智#xff0c;贫而富#xff0c;可乎#xff1f; 曰#xff1a;其唯学乎” 桥接模式概述与角色组成 想象一下你家里的电视遥控器#xff0c;无论是索尼还是三星的电视机#xff0c;遥控器的按键功能都差不多#xff1… ~犬余~ “我欲贱而贵愚而智贫而富可乎 曰其唯学乎” 桥接模式概述与角色组成 想象一下你家里的电视遥控器无论是索尼还是三星的电视机遥控器的按键功能都差不多有开关按钮、音量调节、频道切换等。遥控器本身的功能抽象和具体品牌电视的实现实现是分离的这就是桥接模式的一个生动写照。 桥接模式的核心思想是将抽象部分与实现部分分离让它们都可以独立变化。这就好比建造一座桥把两个独立的部分连接起来。在我们的电视机例子中遥控器就是连接用户操作和电视机的桥梁。 如上图所示桥接模式由四个核心角色组成 抽象类Abstraction定义抽象类的接口它包含一个对实现类接口的引用。就像遥控器的抽象类定义了基本的控制功能并持有对具体电视机的引用。扩展抽象类RefinedAbstraction扩展抽象类加入更多的功能特性。比如在基础遥控器的基础上添加了更多高级功能的智能遥控器。实现类接口Implementor定义实现类的接口供抽象类调用。就像所有品牌电视机都应该遵循的标准接口定义了开关机、调节音量等基本功能。具体实现类ConcreteImplementor实现实现类接口的具体类。例如索尼电视机、三星电视机等具体品牌的电视机实现。 这种设计的妙处在于如果我们要添加一种新的遥控器类型比如带语音控制的遥控器只需要扩展抽象类如果要支持一个新品牌的电视机只需要添加具体实现类。两个维度的变化互不影响大大提高了系统的灵活性和可扩展性。 桥接模式案例实现 让我们通过遥控器控制电视机的完整示例来深入理解桥接模式的实现。 首先我们定义电视机的接口 public interface TV {void on();void off();void tuneChannel(int channel); }然后实现具体品牌的电视机 public class SonyTV implements TV {Overridepublic void on() {System.out.println(索尼电视机启动);}Overridepublic void off() {System.out.println(索尼电视机关闭);}Overridepublic void tuneChannel(int channel) {System.out.println(索尼电视切换到 channel 频道);} }public class SamsungTV implements TV {Overridepublic void on() {System.out.println(三星电视机启动);}Overridepublic void off() {System.out.println(三星电视机关闭);}Overridepublic void tuneChannel(int channel) {System.out.println(三星电视切换到 channel 频道);} }接下来定义遥控器的抽象类 public abstract class RemoteControl {protected TV tv;public RemoteControl(TV tv) {this.tv tv;}public abstract void turnOn();public abstract void turnOff(); }实现具体的遥控器类 public class BasicRemote extends RemoteControl {public BasicRemote(TV tv) {super(tv);}Overridepublic void turnOn() {System.out.println(基础遥控器打开电视);tv.on();}Overridepublic void turnOff() {System.out.println(基础遥控器关闭电视);tv.off();} }public class AdvancedRemote extends RemoteControl {public AdvancedRemote(TV tv) {super(tv);}Overridepublic void turnOn() {System.out.println(高级遥控器打开电视);tv.on();}Overridepublic void turnOff() {System.out.println(高级遥控器关闭电视);tv.off();}// 高级遥控器特有的功能public void setChannel(int channel) {System.out.println(高级遥控器切换频道);tv.tuneChannel(channel);} }下面通过一个具体的客户端代码来演示如何使用这个遥控器-电视机系统 public class Client {public static void main(String[] args) {// 创建不同品牌的电视TV sonyTV new SonyTV();TV samsungTV new SamsungTV();// 创建不同类型的遥控器RemoteControl basicRemote new BasicRemote(sonyTV);AdvancedRemote advancedRemote new AdvancedRemote(samsungTV);// 使用基础遥控器操作索尼电视System.out.println(使用基础遥控器操作索尼电视);basicRemote.turnOn();basicRemote.turnOff();System.out.println(使用高级遥控器操作三星电视);advancedRemote.turnOn();advancedRemote.setChannel(5);advancedRemote.turnOff();} }运行结果如下 让我们通过下面的时序图来详细说明对象之间的交互过程 从时序图中我们可以清晰地看到当客户端调用遥控器的turnOn()方法时遥控器会将请求转发给具体的电视机实现类。这种方式让遥控器和电视机之间形成了一个优雅的桥接它们可以独立变化而互不影响。 桥接模式的优缺点 优点 很好地实现了抽象和实现的分离。就像我们的例子中遥控器的功能和电视机的实现是完全分离的这让我们能够独立地扩展任意一边而不会影响另一边。你可以添加一个带有语音控制功能的遥控器而不需要修改任何电视机的代码。提高了系统的可扩展性。当系统需要添加新的实现时只需要增加新的类而不需要修改现有的代码。比如要支持新品牌的电视机只需要实现TV接口即可不需要修改任何遥控器的代码。对客户端来说很友好。客户端代码只需要知道抽象部分的接口而不需要了解具体实现的细节。在我们的例子中使用遥控器的人只需要知道按键的功能而不需要关心不同品牌电视机的具体实现差异。 缺点 增加了系统的复杂度。为了实现抽象和实现的分离我们需要额外的接口和类。对于简单的系统来说使用桥接模式可能会显得有点过度设计。要求正确识别系统中的两个独立变化的维度。如果对系统的理解不够深入可能会导致对抽象和实现的划分不当反而增加系统的维护难度。 桥接模式的适用场景 当一个系统需要在抽象和实现之间具有灵活性时。例如我们的遥控器和电视机的例子两者之间的组合是动态的任何遥控器都可以操控任何品牌的电视机。当系统中有两个或多个独立变化的维度时。比如除了遥控器和电视机的例子类似的场景还有形状和颜色可以有不同形状和不同颜色的组合、平台和视图可以在不同平台上实现不同的视图等。当需要跨平台或跨数据库时。桥接模式可以让具体的平台实现和业务逻辑分离使得系统可以轻松地支持新的平台。当需要在运行时切换不同的实现时。由于抽象和实现是分离的我们可以在运行时动态地改变实现而不会影响到使用抽象接口的代码。 总结 桥接模式通过将抽象部分与实现部分分离实现了两个维度上的独立扩展。就像遥控器和电视机的例子展示的那样它让我们能够在不修改现有代码的情况下轻松地添加新的遥控器类型或支持新品牌的电视机。 在实际应用中使用桥接模式时需要注意以下几点首先要准确识别系统中独立变化的维度其次要合理划分抽象和实现的界限最后要避免过度设计对于简单的系统使用过于复杂的模式反而会增加开发和维护的成本。 桥接模式的精髓在于分离抽象与实现这种分离让系统更加灵活更容易扩展和维护。当你遇到类似的场景时不妨考虑使用桥接模式来优化你的设计。 关注犬余共同进步 技术从此不孤单
http://www.hkea.cn/news/14582179/

相关文章:

  • 地方门户网站模板外发加工是否有专门的网站
  • 网站设计由哪个部门做企业运营管理案例分析
  • 福州光电网站建设网站音乐播放代码
  • 盐城大丰建设局网站wordpress 游戏主题下载失败
  • 网站设计导航栏高度公维金如何上传建设局网站
  • 现在建个企业网站要多少钱校园网网络设计报告
  • 南宫建设局网站首页成都自然排名优化
  • 哪个网站可以做拼图王晴儿 网站建设
  • 30分钟seo网站最新汽油价格调整最新消息
  • 网站如何提高排名天河网站建设价格
  • 沈阳网站建域名查ip
  • 建设网站公司哪里好大连学校网站建设
  • 杭州网站建设源码wordpress 无法邮件
  • 潍坊网站排名公司公司网站域名申请流程
  • 工信部 网站 邮箱微信官网下载安装
  • 深圳建网站哪个公网站搭建思路
  • 公司网站开发类属什么费用怎么用wordpress 建站
  • 钢结构网站建设seo短视频网页入口引流网址
  • 网站服务器租赁价格网站内部链接优化
  • 上海网站建设的价格银川做淘宝网站的
  • 餐饮网站建设优化建站成都网站建设网站建设哪家好
  • 做毕业设计网站教程网站开发 微信 支付
  • 乐陵网站制作网站友情链接对方网站没有加入本站链接对本站有没有影响?
  • 专门做网页设计网站无锡网站建设哪家公司好
  • 北京网站建设流程wordpress 案例
  • 大连网站建设-网龙科技网络布线设计方案
  • 网站所有分类中 点击箭头不出现下拉菜单asp网站水印支除
  • 杭州建设厅官方网站影楼模板网站
  • 移动端网站建设 新闻动态中国家装公司十大排名
  • 商业网站案例教程杜桥做网站哪家好