zoukankan      html  css  js  c++  java
  • 设计模式学习每日一记(8.桥接模式)

    桥接模式

    A.定义:

    将抽象部分和它的实现部分分离,使他们可以独立的变化.

    B.定义分析:

    "将抽象部分和它的实现部分分离,使他们可以独立的变化."抽象部分,比如我们写一个gui tookit,里边有个Window类,这个类代表了窗口,提供了窗口的功能接口如:close、open、resize、moveto等等.基类的接口,我们可以理解为抽象部分.

    "将抽象部分和它的实现部分分离,使他们可以独立的变化."实现部分,上边说抽象部分是Window类,实现Window的功能:

    我们有方法法a:直接在Window类的定义中,绘制Window的轮廓、外形、标题栏、滚动条等等,但是这有个前提,我们是基于什么平台绘制的,当然可以是Windows、Gtk、Qt或者MiniGUI.如果我们直接在Window类中写上了具体的功能实现,那么抽象部分即是实现部分,而且这样的实现是有固定依赖平台的.

    另一种方法b:我们不直接在Window类中实现功能了,我们针对不同平台继承出不同的子类,比如 WindowsWindow是针对Windows平台的Window实现,GtkWindow是针对Gtk平台的Window实现.这样的WindowsWindow和GtkWindow也是 实现部分.他们实现了抽象部分的功能接口定义.但是,我们看到实现子类中的功能接口是被Window定义好的,如果子类需要增加接口,那么Window要动,如果Window动,子类也要动.也就是抽象部分和实现部分耦合的,也就是没有分离.

    "将抽象部分和它的实现部分分离,使他们可以独立的变化."方法b中,抽象部分和实现部分,因为继承关系造成了耦合,那有没有办法解耦呢?看方法c:

    实现部分,即我们的WindowsWindow和GtkWindow不再从Window类继承,而是Window来聚合WindowsWindow或者GtkWindow来实现Window功能。这样抽象和实现部分不就分离了吗?不就能独立变化了吗?

    C.问题:

     (1)为什么叫桥接模式?

    抽象部分和实现部分,不再是继承关系,而是抽象部分聚合了实现部分,这样的关系我们称为桥接.

    (2)什么时候使用?

    当需要分离抽象部分和实现部分的时候.

    当抽象部分和实现部分都可以通过生成子类扩充的时候.

    ...

  • 相关阅读:
    突破
    leetcode刷题 538~
    leetcode刷题 519~
    Docker练习之镜像更新方法1
    十二 Linux之tar解压缩
    十一 Linux软件包管理yum
    十 Linux指令之grep
    九 linux指令之find
    八 Linux ps指令查看进程和kill杀进程
    七 Linux top命令
  • 原文地址:https://www.cnblogs.com/linucos/p/2227242.html
Copyright © 2011-2022 走看看