zoukankan      html  css  js  c++  java
  • POSA2:Wrapper Facade模式

    意图

    用更加简洁、健壮、可移植、可维护和内聚的面向对象接口,封装已存在的非面向对象API的函数和相关数据。

    背景

    使用已存在的非面向对象的API提供的服务或机制,开发可维护和进化的应用。

    问题

    • 简洁的代码比复杂的代码更加健壮,因为它易于理解和维护
    • 可移植的软件可以容易的在不同的操作系统、编译器和硬件平台之间移植
    • 提高软件可维护性,会降低开发生命周期的开销
    • 高内聚的组件,易于学习、维护和增强

    解决方案

    结构:

    行为:


    实现:

    1. 识别已有的过程式API中内聚的抽象和关系
    2. 把内聚的函数放入包装外观类中(Wrapper Facade Class)
      1. 创建内聚类
      2. 把多个独立的函数放入其中
      3. 自动创建和销毁,可以考虑使用构造函数和析构函数
      4. 选择间接的等级
      5. 检查依赖与特定平台变化的代码
    3. 考虑以可控地访问实现细节(Escape-Hatch)
    4. 开发一套错误处理机制
    5. 定义相关的帮助类(可选)

    已知应用

    1. MFC
    2. ACE

    效果

    优势:
    • 内聚的高层面向对象接口
    • 易于移植和维护
    • 模块化、可重用、可配置
    不足:
    • 功能缩水(Escape-Hatch可以解决)
    • 性能降低(类函数内联可以解决)
    • 编程语言和编译器的限制

    2012/04/11 00:05 于上海

  • 相关阅读:
    css 弹出框
    net stop 出现1060错误
    a href=#与 a href=javascript:void(0) 的区别
    ubuntu如何安装Mac主题
    js arguments.callee & caller的用法及区别
    js函数——setinterval和setTimeout
    highcharts简介
    highcharts柱状图和饼图的数据填充
    jqgrid的外观重绘
    laravel定时任务
  • 原文地址:https://www.cnblogs.com/mywolrd/p/2441598.html
Copyright © 2011-2022 走看看