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

如何建设公司网络营销网站企业网站开发

如何建设公司网络营销网站,企业网站开发,加强网站队伍建设,郑州公司企业网站建设文章目录 简介问题解决方案示例总结 简介 桥接器是一种结构型设计模式,可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。 问题 假如你有一个几何形状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/301742.html

相关文章:

  • 给客户做网站需要提供深圳sem优化
  • 网站编程工资多少怎么自己创建一个网站
  • wordpress 安装主题 无法调用图片和颜色宁波seo公司网站推广
  • 网络营销就是网上营销谷歌优化排名哪家强
  • 网站代理服务器连接失败网站域名怎么注册
  • 专做品牌网站公司网页怎么做
  • 做网站简单的软件国外网页模板
  • 黄石公司做网站新人做外贸怎么找国外客户
  • 江门h5模板建站宝鸡seo
  • 移动端网站模板小视频关键词汇总
  • 做代刷网站赚钱不西安seo整站优化
  • 温州商城网站建设优化培训课程
  • 河北建设厅政府网站网站seo外包
  • 深圳做网站j华信科外包优化网站
  • 中英网站建立宁德网站建设制作
  • 大石桥做网站国外搜索网站排名
  • 2018网站做外链互联网推广怎么找渠道
  • 做外贸做什么英文网站好合肥网站优化搜索
  • 高性价比网站建设百度 营销中心
  • 如何做网站霸屏如何自己建一个网站
  • wordpress在线客服插件seo超级外链
  • 济宁亿峰科技做网站一年多少费用seo站内优化
  • 积玉桥网站建设百度客服号码
  • 微投票网站网站排名提高
  • 网站建设服务增值税税率上海百度seo
  • 广州网站设计公司vi设计公司国际新闻最新消息美国
  • 开封+网站建设+网络推广重庆快速网络推广
  • 做网站页面西安关键词推广
  • 国外js建设网站百度学术论文查重免费检测
  • 什么网站会更有浏览量郑州网站建设制作