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

建站极速通佛山网站建设公司怎么选

建站极速通,佛山网站建设公司怎么选,为什么建设的网站有时候访问慢6,wordpress怎么批量修改分类文章目录 一、介绍二、案例1. 组件抽象化2. 桥梁抽象化 一、介绍 桥接模式#xff0c;属于结构型设计模式。通过提供抽象与实现之间的桥接结构#xff0c;把抽象化与实现化解耦#xff0c;使得二者可以独立变化。 《Head First 设计模式》#xff1a; 将抽象和实现放在两… 文章目录 一、介绍二、案例1. 组件抽象化2. 桥梁抽象化 一、介绍 桥接模式属于结构型设计模式。通过提供抽象与实现之间的桥接结构把抽象化与实现化解耦使得二者可以独立变化。 《Head First 设计模式》 将抽象和实现放在两个不同的类层次中使它们可以独立地变化。 《图解设计模式》 将类的功能层次结构和实现层次结构相分离使二者能够独立地变化并在两者之间搭建桥梁实现桥接。 从专业术语对交接模式的解释来看总是让人似懂非懂即使懂了从代码上实现又让人无法捉摸。典型的每个字都认识连在一起就不懂了。 下面我们先通过一个简单的例子来演示一下桥接的结构是什么样的然后对其进行改造最终实现桥接模式。 二、案例 我们假设一部手机有三个重要部件电池(Battery)、摄像头(Camera)、屏幕(Screen)。当我们拍摄一张高清照片时需要充足的电量、高像素的摄像头、高分辨率的屏幕。 于是我们可以通过下面的代码完成拍照动作 电池Battery public class Battery {public Battery() {System.out.println(充足电量的电池);}public void electric() {System.out.println(电池供电...);} }摄像头Camera public class Camera {public Camera() {System.out.println(高清像素的摄像头);}public void catchImg() {System.out.println(摄像头捕获图像...);} }屏幕Screen public class Screen {public Screen() {System.out.println(高分辨率的屏幕);}public void show() {System.out.println(屏幕显示照片...);} } 手机Phone public class Phone {private Battery battery;private Camera camera;private Screen screen;public Phone(Battery battery, Camera camera, Screen screen) {this.battery battery;this.camera camera;this.screen screen;}public void takePic() {System.out.println(手机拍照开始...);// 电池供电battery.electric();// 摄像头捕获图像camera.catchImg();// 屏幕显示照片screen.show();} }演示 public static void main(String[] args) {Battery battery new Battery();Camera camera new Camera();Screen screen new Screen();Phone phone new Phone(battery, camera, screen);phone.takePic(); }结果输出 从该案例中可以看出电池、摄像头、屏幕这三个组件是相互独立的各自干各自的活通过手机将他们连接起来就可以进行拍照这时手机就表现为桥梁的角色。通过桥梁三个组件相互独立。 1. 组件抽象化 在实际现实中无论是电池、摄像头、还是屏幕他们都有各自的品牌厂商因此我们需要将他们抽象化。如电池有南孚和山羊摄像头有索尼和徕卡屏幕有三星和京东方。 所有我们需要做出修改新建电池、摄像头、屏幕的抽象类再分别按照品牌厂商对这些抽象类进行实现。 电池抽象类Battery及其实现类南孚电池(NanFu)、山羊电池(Sheep) public interface Battery {void electric(); }public class NanFu implements Battery {public NanFu() {System.out.println(南孚电池实例化);}Overridepublic void electric() {System.out.println(南孚电池正在供电...);} }public class Sheep implements Battery {public Sheep() {System.out.println(山羊电池实例化);}Overridepublic void electric() {System.out.println(山羊电池正在供电...);} }摄像头抽象类Camera及其实现类徕卡摄像头(Laika)、索尼摄像头(Sony) public interface Camera {void catchImg(); }public class Laika implements Camera {public Laika() {System.out.println(徕卡摄像头实例化);}Overridepublic void catchImg() {System.out.println(徕卡摄像头捕获图像...);} }public class Sony implements Camera {public Sony() {System.out.println(索尼摄像头实例化);}Overridepublic void catchImg() {System.out.println(索尼摄像头捕获图像...);} }屏幕抽象类Screen及其实现类京东方显示屏(JingDongFang)、三星显示屏(SanXing) public interface Screen {void show(); }public class JingDongFang implements Screen {public JingDongFang() {System.out.println(京东方显示屏实例化);}Overridepublic void show() {System.out.println(京东方显示屏显示照片...);} }public class SanXing implements Screen {public SanXing() {System.out.println(三星显示屏实例化);}Overridepublic void show() {System.out.println(三星显示屏显示照片...);} } 这样一来手机的构造方法的参数就由原来的具体实现类变成了抽象类。 public Phone(Battery battery, Camera camera, Screen screen) {this.battery battery;this.camera camera;this.screen screen; }该构造方法参数的实际类型由调用方创建的实例为准。 public static void main(String[] args) {// 使用南孚电池Battery battery new NanFu();// 索尼相机Camera camera new Sony();// 京东方显示屏Screen screen new JingDongFang();Phone phone new Phone(battery, camera, screen);phone.takePic(); }输出如下 2. 桥梁抽象化 其实不仅电池、摄像头、屏幕有自己的品牌厂商手机也不例外如华为、oppo、vivo等因此我们也需要将手机这个桥梁的角色抽象化。但是如果我们将该桥梁设计成一个接口由不同的手机品牌实现该接口那么就可能会导致不同的实现类具有不同参数的构造方法如此一来所有品牌手机的功能虽然受到约束(实现类手机接口)但是他们的组成结构却千差万别。如下所示 public interface MyPhone {/*** 拍照*/void takePic();/*** 通话*/void call();/*** 微信聊天*/void wechat(); }public class Oppo implements MyPhone{private ComponentA componentA;private ComponentB componentB;public Oppo(ComponentA componentA, ComponentB componentB) {this.componentA componentA;this.componentB componentB;}Overridepublic void takePic() {// 照相}Overridepublic void call() {// 打电话}Overridepublic void wechat() {// 聊微信} }public class Vivo implements MyPhone{private ComponentC componentC;private ComponentD componentD;public Oppo(ComponentC componentC, ComponentD componentD) {this.componentC componentC;this.componentD componentD;}Overridepublic void takePic() {// 照相}Overridepublic void call() {// 打电话}Overridepublic void wechat() {// 聊微信} } 从上面的代码来看oppo和vivo虽然实现了**手机(MyPhone)**定义的所有功能但是却乱七八糟的oppo手机内部组件是ComponentA和ComponentBvivo手机内部组件却是ComponentC和ComponentD。这样的话手机行业岂不乱套了。 所以我们对桥梁的抽象化不应采用接口而是抽象类。 使用抽象类有一个好处是可以使所有子类拥有相同的内部属性而且对所有子类的构造方法也做出了约束。 如下所示我们将手机抽象化一个手机接口(Phone)来定义各个功能再通过一个抽象子类(AbstractPhone)实现手机接口定义的功能并规范构造方法由华为(HuaWei)、**小米(XiaoMi)**两个品牌继承该抽象子类。 public interface Phone {/*** 拍照*/void takePic(); }public abstract class AbstractPhone implements Phone {private Battery battery;private Camera camera;private Screen screen;public AbstractPhone(Battery battery, Camera camera, Screen screen) {this.battery battery;this.camera camera;this.screen screen;}Overridepublic void takePic() {System.out.println(手机拍照开始...);// 电池供电battery.electric();// 摄像头捕获图像camera.catchImg();// 屏幕显示照片screen.show();} }public class HuaWei extends AbstractPhone {public HuaWei(Battery battery, Camera camera, Screen screen) {super(battery, camera, screen);System.out.println(华为手机实例化);} }public class XiaoMi extends AbstractPhone {public XiaoMi(Battery battery, Camera camera, Screen screen) {super(battery, camera, screen);System.out.println(小米手机实例化);} }通过接口(定义功能)、抽象子类(桥梁)、**实现类(实现功能)**的方式就是交接设计模式的实现。 下面我们进行代码测试 public static void main(String[] args) {Battery battery new NanFu();Camera camera new Sony();Screen screen new JingDongFang();// 华为将南孚电池、索尼相机、京东方显示屏桥接起来形成一部手机Phone phone new HuaWei(battery, camera, screen);// 使用华为手机拍照phone.takePic(); }以上就是桥接模式的演变过程希望通过本篇文章的阅读能使各位朋友对桥接模式有更深入的理解。 纸上得来终觉浅绝知此事要躬行。 ————————我是万万岁我们下期再见————————
http://www.hkea.cn/news/14463095/

相关文章:

  • 如何学习做网站怎么看网站是不是用凡客做的
  • wordpress站点标题副标题换行网页设计与制作项目教程素材
  • 织梦网站更改自己网站做seo
  • 做谷歌外贸较好网站wordpress 建站 linux
  • 浙江常升建设有限公司网站铜仁网站建设哪家专业
  • 怎么做网站弄网盟学生个人网站制作软件
  • 购物网站项目开发哪里有做php网站免费教程
  • 做网站前提需要什么wordpress主机免费
  • 做模版网站湖北省京山县建设局网站
  • 网站建设总体流程二级网站如何一级域名
  • 手机网站导航栏特效凡科邮箱
  • 企业网站有什么创新设计多功能水杯
  • 网站建设销售岗位职责中英文网站开发
  • 服务器和网站维护外贸公司做网站该去哪里找
  • 红塔网站制作什么是网站?
  • 哪里可以做寄生虫网站做信贷抢客户网站
  • 小榄网站建设推广禹城网站建设电话
  • 贵阳网站优化排名仙桃有哪些做网站的公司
  • 肥西县城乡建设局网站wordpress建官网怎样
  • 深圳快速网站制作哪家公司好品牌化战略的重要性
  • 外贸网站建设熊掌号4s店网站模板
  • 天津网站建设费用百度收录网站要多久
  • 网站建设与维护总结接工程的app软件
  • 诸暨市建设局行业管理网站威联通wordpress怎么用
  • 做网站域名起什么作用外贸网站建设优化营销
  • 学校官网的网址网站怎么做360免费优化
  • wordpress上站工具在网站做责编会很累吗
  • 建设网站好处旅游网站建设模版
  • 自己买服务器做网站页面设计制作网站
  • app开发网站建设公司哪家好海外购物商城