zoukankan      html  css  js  c++  java
  • 速查:设计模式-速查表

    速查设计模式的“定义”和“用处”

    策略模式
    定义:定义算法族,分别封装起来,让它们可以互相替换
    用处:让算法的变化独立于使用算法的客户

    观察者模式
    定义:在对象之间定义一对多的依赖,当一个对象改变状态时,依赖它的对象会收到通知并自动更新。
    用处:同上

    装饰器模式
    定义:动态地把责任加到对象上
    用处:用继承之外的方法扩展功能。
    核心本质:
    1. 装饰器和被装饰的对象有相同的父类,所以可以替代被装饰对象。
    2. 装饰器对象有一个属性是被装饰对象
    3. 可以层层装饰

    工厂模式
    定义:定义了一个创建对象的接口,由子类决定实例化的类型到底是哪个
    用处:把类的实例化推迟到子类。

    单例模式
    定义:确保类只有一个实例,且提供全局访问点。
    要点:
    1. 多个类加载器可能导致出现多个单例。
    2. jvm1.2和之前版本的垃圾回收有bug:会自动回收单例对象。
    3. 使用时临时创建单例对象方案会有多线程bug:在第一个线程进入null为真的语句赋值单例对象之前,其他线程可能会也进入null为真的语句。
    方案:
    1. 急切实例化,静态地初始化实例。可以避免上面问题3
    2. 同步getInstance()方法,可能影响性能。
    3. 双重检查加锁,必须java5以上版本才行。

    命令模式
    定义:把请求封装成对象
    用处:把发出请求的对象和执行的对象解耦。比如事先日志和事务功能。
    要点:
    1. “请求”被建模为对象
    2. 命令对象封装了执行者
    3. 发出者运行命令对象的execute()方法,执行者的方法就被调用
    4. 命令对象可以支持undo()方法

    适配器模式
    定义:把一个类的接口转换成客户期望的另一个接口
    用处:让原本不兼容的类兼容。

    外观模式
    定义:提供一个统一接口来访问子系统中的一群接口。
    用处:此模式定义一个高层接口,方便子系统使用
    要点:
    1. 提供高层接口是为了方便使用

    *模式对比
    适配器:包装一个对象“改变其接口”
    装饰器:包装一个对象“增加行为和职责”
    外观模式:包装一群对象“简化其接口”

    模板方法
    定义:在父类中定义算法骨架,把一些步骤的实现延迟到子类
    好处:算法骨架被封装到父类,子类无需了解也无法篡改,只能实现或改变算法骨架中的部分步骤。

    迭代器模式
    定义:提供一种方法一次访问数据集对象的各个元素,但不暴露其内部表示
    好处:不同的数据集对象的迭代器实现相同接口,让遍历元素的代码与数据集对象的具体类型解耦

    组合模式
    定义:允许你把对象组成树形结构来表现“整体/部分”的层次结构。
    好处:让客户以一致的方法处理个别对象和对象组合。

    暂时先写到这,后续更新敬请期待。

  • 相关阅读:
    div居中和table居中,jQuery获取下拉列表值
    Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
    Android监听应用程序安装和卸载
    android开发图片分辨率问题解决方案
    [整理]Selector、shape详解
    android string.xml %问题
    Android Service学习之本地服务
    android selector中使用shape
    android AsyncTask 详解
    android bluetooth UUID蓝牙查询表
  • 原文地址:https://www.cnblogs.com/chang-an/p/6480940.html
Copyright © 2011-2022 走看看