简易的台灯

  • Abstract Server模式
    • 谁拥有接口.
      • 接口属于它的客户,而不是它的派生类.
      • 接口和客户之间的逻辑关系,强于接口和其派生类的逻辑关系.
      • 逻辑关系和实体关系的强度是不一致的.在实体关系上,继承比依赖更强.
      • 最好将接口和它的客户打包,而不是和它的派生类在一起.
  • Adapter模式
    • 当Light不能继承Switchable接口时(第三方代码).
    • Modem Client仍然看到的是期望的连接行为,而Ded User不必去调用根本无用的Dial/Hangup().
    • 仍然存在杂凑体.Adapter仍然要模拟连接动作.但是依赖关系都存在于Adapter上,其对User是隐藏的.只有factory才会依赖于它.
  • Bridge模式
    • 在类型层次结构具有多个自由度时,Bridge把这些层次结构分开并通过桥把他们结合在一起,而不是合并.
  • 结论
  • 不存在完美的结构.一个变化就能够破坏所谓的完美结构.
  • 只存在试图去平衡当前的代价和收益的结构.诀窍是尽可能的保持系统简单,灵活.
  • Adapter方案简单直接,并让所有的依赖关系都指向正确的方向,并且易于实现.
  • Bridge复杂,但是在需要完全分离链接和通信策略并且需要增加新的链接策略时才使用.

[Agile Software Development(Principles,Patterns,and Pracitices)]

Abstract Server模式,Adapter模式和Bridge模式的更多相关文章

  1. Java设计模式(6)桥模式(Bridge模式)

    Bridge定义:将抽象和行为划分开来,各自独立,但能动态的结合. 为什么使用桥模式 通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以 ...

  2. 【设计模式】Bridge模式(桥接模式)

    最近的一次面试中,被问到桥接模式,以前呢并没有很仔细的研究过这个设计模式,借此机会剖析一下. 先给出自己对这个模式理解后的源码: interface A{ void methodA(); } inte ...

  3. Android中Adapter和Bridge模式理解和应用

    一 Adapter模式 意图: 将一个类的接口转换成客户希望的另外一个接口. Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作. 适用性: 使用一个已存在的类,而它的接口 ...

  4. Structual设计--Bridge模式

    1.意图 将抽象部分与它的实现部分分离.使他们都能够独立地变化. 2.别名 Handle/Body 3.动机 当一个抽象对象可能有多个实现时,通经常使用继承来协调它们.抽象类定义对该抽象的接口.而详细 ...

  5. 一天一个设计模式——Adapter适配器模式(Wrapper模式)

    一.模式说明 在现实生活中,当需要将两种设备连接起来,但是两个设备的接口规范又不一致(比如电脑上只有Type-C接口,但是你的显示器是HDMI接口),这时候就需要一个适配器,适配器一端连接电脑,一端连 ...

  6. 设计模式(七):Adapter 适配器模式 -- 结构型模式

    1. 概述: 接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题.程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化.  例子1:iphone4,你即可以 ...

  7. 设计模式之桥接模式(Bridge模式)

    我想大家小时候都有用蜡笔画画的经历吧.红红绿绿的蜡笔一大盒,根据想象描绘出格式图样.而毛笔下的国画更是工笔写意,各展风采.而今天我们的故事从蜡笔与毛笔说起. 设想要绘制一幅图画,蓝天.白云.绿树.小鸟 ...

  8. 设计模式之——bridge模式

    Bridge模式,又叫桥接模式,是针对同一接口进行扩展与实现操作的一种设计模式. 这种模式,与之前学过的适配器模式具有相似的地方,也有不同的地方,下面就让我们一一解析吧. 首先,我们要了解到,为什么需 ...

  9. java 实现Bridge模式(转)

    原文:http://chjking.blog.163.com/blog/static/6439511120081152534252/ 看了网上一些关于咖啡加奶的例子,觉得真是天下文章一大抄,不管好的坏 ...

随机推荐

  1. python之urllib

    简单的web应用包括使用被称为url(统一资源定位器,uniform resource locator)的web地址 这个地址用来在web上定位一个文档,或调用一个CGI程序来为你的客户端产生一个文档 ...

  2. sql语句执行插入后返回ID

    insert into table1(aaa,bbb) values('aaa','bbb') select @@identity

  3. 自动化测试工具QTP和SilkTest横向PK(转)

    转自:http://www.uml.org.cn/Test/201405212.asp?artid=1686 众所周知,自动化测试工具曾几何时三足鼎立,Mercury QTP/WinRunner系.I ...

  4. [linux] 更改目录显示颜色

    第一.创建配置文件 $dircolors -p>~/.dircolors 第二.编辑配置文件 打开文件: $vi ~/.dircolors 找到这一行: DIR ; # directory #可 ...

  5. html添加网络音乐

    IE浏览器,其他的不一定适应 <embed src="http://www.kmfhsj.com/fish-photo/music/xiaochenggushi.mp3" a ...

  6. heartbeat安装与配置

    Hearbeat和keepalived区别 Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP): He ...

  7. Linux内核分析之计算机是如何工作的

    一.计算机工作原理 本周实验主要是反汇编C代码,生成汇编程序.冯·诺依曼理论的要点是:数字计算机的数制采用二进制,计算机应该按照程序顺序执行.人们把冯·诺依曼的这个理论称为冯·诺依曼体系结构.CPU通 ...

  8. Hyper-V初涉_早期Windows安装虚拟硬件驱动

    虽然微软已经一再强调将要对Windows XP停止提供服务,但是难免在一些特殊场合需要早期的系统进行测试.为了测试需要,我在Hyper-V中安装了Windows XP. 按照之前的方法,对Hyper- ...

  9. python import 模块异常问题

    新项目开始了,(tornado,python) 结果出现了一个比较诡异的问题. import 自己的在conf文件夹下配置文件settings的时候, from conf.settings impor ...

  10. jQuery遮罩层效果

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...