三种设计模式可以提供什么,他们都有类的概念,Js虽然是无类模式,但是可以实现类
创建型模式 |
| 由谁提供 | 描述 | | —- | —- | —- | | 工厂方法 | 类 | 基于接口数据或者事件生成几个派生类的一个实例 | | 抽象工厂 | 对象 | 创建若干类系列的一个实例,无需详述具体的类 | | 生成器 | 对象 | 分离对象构建 | | 原型 | 对象 | 用于复制或者克隆完全初始化的实例 | | 单例 | 对象 | 一个类在全局访问只有一个唯一的实例 |结构性模式 |
| 由谁提供 | 描述 | | —- | —- | —- | | 适配器 | 类 | 匹配不同类的接口,因此类可以在不兼容接口的情况下共同工作 | | 桥接 | 对象 | 将对象接口从实现中分离,因此可以独立变化 | | 组合 | 对象 | 简单和复合对象的结构,使对象的总和不只是它各部分的总和 | | 装饰 | 对象 | 向对象动态添加备选的处理 | | 外观 | 对象 | 隐藏整个子系统复杂性的唯一一个类 | | 享元 | 对象 | 一个用于实现包含在别处信息的高效共享的细粒度实例 | | 代理 | 对象 | 占位符对象代表真正的对象 |行为模式 |
| 由谁提供 | 描述 | | —- | —- | —- | | 解释器 | 类 | 将语言元素包含在应用程序中的方法,以匹配预期语言的语法 | | 模版方法 | 类 | 在方法中创建算法的shell,然后将确切的步骤推到子类 | | 职责链 | 对象 | 在对象链之间传递请求的方法,以找到能够处理请求的对象 | | 命令 | 对象 | 将命令执行从调用中分离 | | 迭代器 | 对象 | 顺序访问一个集合的元素,无需了解该集合内部的工作机理 | | 中介者 | 对象 | 在类之间定义简化的通信,以防止一组类显式调用彼此 | | 备忘录 | 对象 | 捕获对象的内部状态,以能够在以后恢复它 | | 观察者 | 对象 | 向多个类通知改变的方式,以确保类之间的一致性 | | 状态 | 对象 | 状态改变时,更改对象的行为 | | 策略 | 对象 | 在一个类中封装算法,将选择和实现分离 | | 访问者 | 对象 | 向类添加一个新的操作,无需改变类 |
