《设计模式》第四章 结构型模式

第四章 结构型模式

1. Adapter(适配器)— 类对象结构型模式

  • 意图:
    • 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作;
  • 别名:
    • Wrapper(包装器)

2. Bridge(桥接)— 对象结构模式

  • 意图:
    • 将抽象部分与实现部分分离,使得他们可以独立地变化;
  • 别名:
    • Handle/Body

3.Composite(组合) — 对象结构型模式

  • 意图:
    • 将对象组合成树形结构以表示 “部分-整体” 的层次结构;
    • 使得用户对单个对象和组合对象的使用具有一致性;

4. Decorator(装饰) — 对象结构型模式

  • 意图:
    • 动态的给对象添加一些额外的职责;
  • 别名:
    • Wrapper(包装器)
  • 效果:
    • 比静态继承更灵活;
    • 避免在层次结构高层的类有太多的特征;
  • 实现:
    • 将Decorator看作是一个对象的外壳,它可以改变这个对象的行为;
  • 比较:
    • Adapter:适配器给对象一个全新的接口,装饰只改变对象的职责而不改变接口;
    • Composite:装饰是组合的子集,只不过侧重点在于增加额外的职责而不是对象聚集;
    • Strategy:装饰改变外表,策略改变内核;

5. Facade(外观)— 对象结构型模式

  • 意图:
    • 子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,使得子系统易用;
  • 使用:
    • 为一个复杂的子系统提供一个简单的接口;提供了一个简单的缺省试图,满足大多数用户需求,更多需求可以越过Facade层;
    • 客户程序与抽象类强耦合,降低耦合性;
  • 协作:
    • 客户程序发送请求给Facade的方式与子系统通信,Facade转发请求给适合的子系统对象;
  • 比较:
    • Abstract Factory:可以替代Facade;
    • Mediator:都对已有的类进行了抽象,Mediator是同事类之间的通信;Facade是对子系统和客户系统之间的通信;

6. Flyweight(享元) — 对象结构型模式

  • 意图:
    • 运用共享技术有效的支持大量细粒度的对象;
  • 动机:
    • flyweight是一个共享对象;
    • 不能对它所运行的的场景做出任何假设;
    • 内部状态:存储与flyweight中,包含了独立于场景的信息,共享的基础;
    • 外部状态:取决于场景,不能共享;

7. Proxy(代理) — 对象结构型模式

  • 意图:
    • 为其他对象提供一种代理以控制对这个对象的访问;
  • 别名:
    • Surrogate
  • 适用性:
    • 需要用比较通用和复杂的对象指针代替简单的指针的时候,使用proxy模式;
    • 远程代理:为一个对象在不同的地址空间提供局部代表;
    • 虚代理:更具需要创建开销很大的对象;
    • 保护代理:控制对原始对象的访问;
    • 智能指引:取代了简单指针,访问对象时执行一些附加操作;
      • 对指向实际对象的引用计数,没有引用时自动释放;
      • 当第一次引用一个持久对象时,将它装入内存;
      • 在访问一个实际对象之前,检查是否已经锁定了他,以确保其他对象不能改变他;
  • 效果
    • 访问对象时引入了一定程度的间接性
  • 比较:
    • Adapter:适配器为适配的对象提供了一个不同的接口;代理提供了与他的实体相同的接口;
    • Decorator:装饰为对象添加一个或多个功能,代理控制对象的访问;

8. 总结

  • 结构型模式之间具有相似性,可能时因为结构型模式依赖于同一个很小的语言机制集合构造代码和对象;
  • Adapter模式与Bridge模式异同:
    • Adapter模式主要是为了解决两个已有接口之间不匹配的问题,不考虑接口的实现和演化;不需要对两个独立设计的类进行重新设计,就可以实现协同工作;
    • Bridge模式则是对抽象接口与他的(可能是多个)实现部分进行桥接;
目录 第1UML类图实训 1.1知识讲解 1.1.1UML概述 1.1.2类与类的UML表示 1.1.3类之间的关系 1.2实训实例 1.2.1类图实例之图书管理系统 1.2.2类图实例之商场会员管理系统 1.3实训练习 第2面向对象设计原则实训 2.1知识讲解 2.1.1面向对象设计原则概述 2.1.2单一职责原则 2.1.3开闭原则 2.1.4里氏代换原则 2.1.5依赖倒转原则 2.1.6接口隔离原则 2.1.7合成复用原则 2.1.8迪米特法则 2.2实训实例 2.2.1单一职责原则实例分析 2.2.2开闭原则实例分析 2.2.3里氏代换原则实例分析 2.2.4依赖倒转原则实例分析 2.2.5接口隔离原则实例分析 2.2.6合成复用原则实例分析 2.2.7迪米特法则实例分析 2.3实训练习 第3创建型模式实训 3.1知识讲解 3.1.1设计模式 3.1.2创建型模式概述 3.1.3简单工厂模式 3.1.4工厂方法模式 3.1.5抽象工厂模式 3.1.6建造者模式 3.1.7原型模式 3.1.8单例模式 3.2实训实例 3.2.1简单工厂模式实例之图形工厂 3.2.2工厂方法模式实例之日志记录器 3.2.3抽象工厂模式实例之数据库操作工厂 3.2.4建造者模式实例之游戏人物角色 3.2.5原型模式实例之快速创建工作周报 3.2.6单例模式实例之多文档窗口 3.3实训练习 第4结构型模式实训 4.1知识讲解 4.1.1结构型模式概述 4.1.2适配器模式 4.1.3桥接模式 4.1.4组合模式 4.1.5装饰模式 4.1.6外观模式 4.1.7享元模式 4.1.8代理模式 4.2实训实例 4.2.1适配器模式实例之算法适配 4.2.2桥接模式实例之跨平台视频播放器 4.2.3组合模式实例之杀毒软件 4.2.4装饰模式实例之界面显示构件库 4.2.5外观模式实例之文件加密 4.2.6享元模式实例之围棋棋子 4.2.7代理模式实例之日志记录代理 4.3实训练习 第5行为型模式实训 5.1知识讲解 5.1.1行为型模式概述 5.1.2职责链模式 5.1.3命令模式 5.1.4解释器模式 5.1.5迭代器模式 5.1.6中介者模式 5.1.7备忘录模式 5.1.8观察者模式 5.1.9状态模式 5.1.10策略模式 5.1.11模板方法模式 5.1.12访问者模式 5.2实训实例 5.2.1职责链模式实例之在线文档帮助系统 5.2.2命令模式实例之公告板系统 5.2.3解释器模式实例之机器人控制程序 5.2.4迭代器模式实例之商品名称遍历 5.2.5中介者模式实例之温度转换器 5.2.6备忘录模式实例之游戏恢复点设置 5.2.7观察者模式实例之股票变化 5.2.8状态模式实例之银行账户 5.2.9策略模式实例之电影票打折 5.2.10模板方法模式实例之数据库操作 5.2.11访问者模式实例之奖励审批 5.3实训练习 第6模式联用与综合实例实训 6.1设计模式补充知识 6.1.1反射与配置文件 6.1.2GRASP模式 6.1.3架构模式与MVC 6.2模式联用实训 6.2.1适配器模式与桥接模式联用 6.2.2组合模式与命令模式联用 6.2.3外观模式与单例模式联用 6.2.4原型模式与备忘录模式联用 6.2.5观察者模式与组合模式联用 6.2.6访问者模式、组合模式与迭代器模式联用 6.3综合实例实训 6.3.1多人联机射击游戏 6.3.2数据库同步系统 6.4实训练习 附录A参考答案 A.1第1实训练习参考答案 A.2第2实训练习参考答案 A.3第3实训练习参考答案 A.4第4实训练习参考答案 A.5第5实训练习参考答案 A.6第6实训练习参考答案 参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值