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

网页制作素材源代码seo整站优化更能准确获得客户

网页制作素材源代码,seo整站优化更能准确获得客户,做网站需要搭建服务器么,北京软件开发培训学校文章目录 简介问题解决方案示例总结 简介 桥接器是一种结构型设计模式,可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。 问题 假如你有一个几何形状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/122275.html

相关文章:

  • 什么做网站做个网站一般要多少钱啊seo排名影响因素主要有
  • 专门做物理的网站sem竞价外包公司
  • wordpress 小兽seo关键词挖掘
  • 网站建设怎么开发客户最常用的几个关键词
  • 深圳室内设计工作室排名搜索引擎优化方法案例
  • 外贸网站需要备案吗网站优化排名方案
  • 深圳营销型网站制作公司成都品牌推广
  • 兼职做放单主持那个网站好百度一级代理商
  • 珠海响应式网站建设茂名网络推广
  • phpcms v9 网站名称标签快速整站排名seo教程
  • 景区网站建设方案 费用云资源软文发布平台
  • 中国郑州建设信息网站百度排行榜小说
  • 葫芦岛城乡建设委员会网站环球网
  • 国外做ui的网站j站长工具星空传媒
  • 网站建设北京贵平台推广方式
  • 国内跨境电商平台有哪些?郑州seo服务技术
  • 广东营销型网站建设报价百度热议排名软件
  • 现在有什么新型建筑模板seo网络排名优化
  • 在学做网站还不知道买什么好百度图片搜索网页版
  • 做相册本哪个网站好用吗长沙关键词优化推荐
  • 网站建设交易中心申请网站域名要多少钱
  • 用wordpress和avada做网站培训机构有哪些
  • 厦门哪些做鲜花的网站windows系统优化软件排行榜
  • p2p网站建设公司哪家好搜索引擎优化的基础是什么
  • 日本可以自己做网站吗长沙网站包年优化
  • 国外怎么做网站腾讯域名
  • 做网站就上凡科建站百度网站打开
  • 网站有哪些备案搜索引擎优化公司排行
  • 高明网站建设公司百度网盘官网登陆入口
  • 宁波网络推广渠道seo品牌优化整站优化