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

网页制作素材十个跳转页面windows优化大师最新版本

网页制作素材十个跳转页面,windows优化大师最新版本,创业平台网,白城市住房建设局网站文章目录 简介问题解决方案示例总结 简介 桥接器是一种结构型设计模式,可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。 问题 假如你有一个几何形状Shape类,它有两个子类:圆形C…

文章目录

  • 简介
  • 问题
  • 解决方案
  • 示例
  • 总结

简介

桥接器是一种结构型设计模式,可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。

问题

假如你有一个几何形状Shape类,它有两个子类:圆形Cir­cle和方形Square。现在你想对类层次结构进行扩展,让它包含颜色属性,所以你打算创建 红色Red和 蓝色Blue的形状子类。但是,由于你已有两个子类,所以总共需要创建四个类才能覆盖所有组合,比如蓝色圆形Blue­Cir­cle和红色方形Red­Square。
所有组合类的数量将以几何级数增长
在层次结构里新增形状和颜色都会导致代码复杂程度指数增长。比如添加三角形状,你需要新增两个子类,也就是每种颜色一个;此后新增一种新颜色需要新增三个子类,即每种形状一个。代码就越来越复杂。

解决方案

问题的根本原因是我们试图在两个独立的维度(形状与颜色)上扩展形状类。我们在使用类继承时经常遇到这样的问题。
桥接模式通过把继承改为组合的方式来解决这个问题。具体来说,就是抽取其中一个维度并让他成为独立的类层次,这样就可以在原来的类中引用这个新层次的对象,从而让一个类不需要拥有所有的状态和行为。
将一个类层次转化为多个相关的类层次,避免单个类层次的失控
根据这种方法,我们可以把颜色相关的代码抽取到拥有红色和蓝色两个子类的颜色父类中,然后在形状类里添加一个指向某一颜色对象的引用成员变量。这个时候,形状类就可以把所有跟颜色相关的工作委派给引入的颜色对象。这样的引用就成为了形状和颜色之间的桥梁。在这之后,新增颜色都不再需要修改形状的类层次,反过来也一样。

示例

以上示例还比较简单,我们来看一个更复杂的示例,以便演示了桥接模式,看看它怎么拆分程序里同时管理设备和遥控器的复杂代码。设备Device类作为实现部分,而遥控器Remote类则作为抽象部分。
在这里插入图片描述

/* 实现层级:设备接口规范 */
public interface Device {// 状态检测基础方法boolean isEnabled();void enable();    // Device接口定义void disable();// 媒体控制方法int getVolume();void setVolume(int percent);int getChannel();void setChannel(int channel);
}/* 具体设备实现 */
class Tv implements Device {         // TV实现private boolean on = false;private int volume = 50;private int channel = 1;public boolean isEnabled() { return on; }public void enable() { on = true; }  // TV特有启动过程public void disable() { on = false; }public int getVolume() { return volume; }public void setVolume(int percent) { volume = Math.max(0, Math.min(100, percent)); }public int getChannel() { return channel; }public void setChannel(int ch) { channel = Math.max(1, ch); }
}class Radio implements Device {     // Radio实现private boolean active = false;private int level = 30;public boolean isEnabled() { return active; }public void enable() { active = true; }public void disable() { active = false; }public int getVolume() { return level; }public void setVolume(int percent) {level = (percent > 100) ? 100 : Math.max(0, percent);}public int getChannel() { return 0; }  // 收音机无频道public void setChannel(int ch) {}      // 空实现
}/* 抽象层级:遥控器抽象 */
abstract class RemoteControl {// 持有实现层对象的引用(关键结构)protected Device device;  public RemoteControl(Device device) {this.device = device;}// 电源切换核心逻辑public void togglePower() {if (device.isEnabled()) {device.disable();} else {device.enable();}}public void volumeUp() {device.setVolume(device.getVolume() + 10);}public void volumeDown() {device.setVolume(device.getVolume() - 10);}public void channelUp() {device.setChannel(device.getChannel() + 1);}public void channelDown() {device.setChannel(device.getChannel() - 1);}
}/* 扩展抽象:高级遥控器(扩展功能) */
class AdvancedRemoteControl extends RemoteControl {public AdvancedRemoteControl(Device device) {super(device);}public void mute() {      // 新增静音功能device.setVolume(0);  // 通过接口操作设备}
}// 客户端使用示例
public class Client {public static void main(String[] args) {Device tv = new Tv();RemoteControl basicRemote = new RemoteControl(tv);basicRemote.togglePower();   // 开启电视Device radio = new Radio();AdvancedRemoteControl advancedRemote = new AdvancedRemoteControl(radio);advancedRemote.mute();       // 设置静音}
}

总结

在这里插入图片描述

  1. 抽象部分(Abstrac­tion):提供高层控制逻辑,依赖完成底层实际工作的具体实现对象
  2. 实现部分(Imple­men­ta­tion):为所有具体实现声明通用接口。抽象部分仅能通过在这里声明的方法和实现对象交互。抽象部分可以列出和实现部分一样的方法,但是抽象部分通常声明一些复杂的行为,这些行为依赖于多种由实现部分声明的操作。
  3. 具体实现(Con­crete Imple­men­ta­tions)中包括特定平台的代码。
  4. 精确抽象(Refined Abstrac­tion)提供控制逻辑的变体。和它的父类一样,它们通过通用实现接口与不同的实现进行交互。
  5. 通常情况下,客户端(Client)仅关心如何与抽象部分合作。但是,客户端需要把抽象对象和一个实现对象连接起来。
http://www.dtcms.com/wzjs/68831.html

相关文章:

  • 沧州建设银行招聘网站谷歌搜索引擎香港免费入口
  • 20m做网站网站建设主要推广方式
  • 青岛网站建设的流程有哪些seo优化推广多少钱
  • 电子网站建设优化公司排名
  • 上海品质网站建设今日北京新闻
  • wordpress邮件客户端北京seo优化外包
  • 网站设计怎么收费晨阳seo
  • 注册一个网站多少钱?新开网站
  • 全国网站开发公司网址有哪些
  • 潍坊企业网站建设爱站网关键词排名
  • 做co网站百度移动端排名软件
  • 微网站开发平台网页设计代做
  • 动态网站开发 课程说明优化大师平台
  • 做营销型网站一般要多少钱百度热搜榜排名今日p2p
  • 哪里有营销型网站最新报价企业网站开发公司
  • 做直销网站的公司广告主平台
  • 廊坊百度网站推广域名备案查询系统
  • 有没有傻瓜式建设网站手机网站建设平台
  • 做网站时给网页增加提醒seo搜索优化
  • 中国建设银行网站首页joy快速排名优化seo
  • 一个网站的后台公司网站的推广方案
  • 管理咨询服务合同范本西安百度推广优化公司
  • 网站内容建设的原则是什么意思新媒体运营培训班
  • 网站开发前端跟后端的区别互联网推广招聘
  • 山东网站建设哪家权威seo推广工具
  • 寻甸回族彝族网站建设百度做广告怎么收费
  • 吉利网站建设b站视频推广网站400
  • 建设电子商务网站必须首先确定的是百度seo优化公司
  • b2c网站价格黄金网站app大全
  • 武汉 网站制作营销100个引流方案