javaScript 设计模式

本文深入解析了设计模式的三大类型:创建型、结构型和行为型。覆盖了从简单工厂到单例,从外观到组合,从模板方法到观察者等经典模式。探讨了它们在软件设计中的应用和价值。

创建型设计模式

  • 简单工厂模式:创建对象
  • 工厂方法模式:时间创建对象工作推迟到子类中,核心类成为了抽象类

      安全工厂方法

var Factory = function (type,content){
    if(this instanceof Factory)if{
        var s= new this[type](content);
        return s;
    }else{
 
         return new Factory(type,content);
    }   
} 
Factory.protptype={}
  • 抽象工厂:通过对类的工厂抽象,使其业务用于地产品簇的创建,而不负责任的创建某一类产品的实例
  •  建造者模式: 将一个复杂对象的构建层预期表示层相互分离,同样的构建过程不同的表示
  • 原型模式:用原型实例指向创建对象的类,使用于创建新的对象的类共享原型对象的属性及方法
  • 单例模式:又称为单体模式、只允许实例化一次的对象类。常常用来规划命名空间。

结构型设计模式

  • 外观模式:为一组复杂的子系统接口提供一个更高级的统一接口,通过这个接口使得对子系统接口的访问更容易
  • 适配器模式:讲一个类(对象)的接口(方法或者属性)转换为另一个接口,以满足用户需求
  • 代理模式:由于一个对象不能直接引用这个对象,所以需要通过dialing对象在这两个对象之间起到中介的作用
  • 装饰者模式:在不改变原有对象的基础上,通过对齐进行包装和拓展(添加属性和方法),使原有的对象和方法可以满足用户的更复杂需求
  • 桥接模式:在系统沿着多为变化的同时,又不增加齐复杂度,并已经达到解耦。
  • 组合模式:又称为部分整体模式,将对象组合成属性结构以表示部分整体的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性
  • 享元模式: 运用共享技术有效的支持大量的细粒度的对象,避免对象之间有相同内容造成多余的开销

行为设计模式

  • 模板方法模式:父类中定义一组操作算法骨架,而将一些实现步骤延迟的子类中,使得子类可以不改变父类的算法结构的同时可以重新定义算法中某些实现步骤
  • 观察者模式,有才能为发布订阅者模式或消息机制,定义了一种依赖关系,解决了主体对象与观察者之间功能的耦合
  • 状态模式:当一个对象内部状态发生改变是,会导致其行为的改变,看起来像是改变了对象
  • 策略模式:将定义的一组算法封装起来,使其相互之间可以替换,封装的算法具有一定的独立性,不会随着客户端的变化而变化
  • 职责链模式:解决请求的发送者与请求者的接受者之间的耦合,通过职责链上的多个对象那个的分解请求流程 ,实现请求在多个对象之间的传递,直到最后一个对象完成请求的处理
  • 命令模式:将请求与实现解耦并封装成独立的对象,从而使不同的请求对客户端实现参数化
  • 访问者模式:针对于对象结构中的元素,定义在不改变该对象的前提下访问结构中元素的新方法
  • 中介者模式:通过中介者对象封装一些列对象之间的交互,使用对象之间不再相互引用,降低他们的耦合。有时候中介者对象也可以改变对象之间的交互
  • 备忘录模式:在不破坏对象的封装性前提下,在对象之外捕获并保存该对象内部的状态以便日后对象使用或者对象恢复到之前的某个状态
  • 迭代器模式: 在不暴露对象内部结构的同时,可以顺序的访问聚合对象内部的元素
  • 解释器模式:对于一种语言,给出其文法表示形式,并定义一种解释器,通过这种解释器来解释语言中定义的句子
  • 连模式:通过对象方法将当前对象返回,实现对同一个对象多个方法的链模式调用,从而简化对该对象的的多个方法的多次调用时,对该对象的多次引用。
  • 委托模式:多个对象接收并处理同一个请求,他们将请求委托给另个一个对象统一处理请求
  • 数据访问对象模式:抽象和封装对数据源的访问与存储,DAO 通过对数据源链接的 管理方便对数据的访问和存储
  • 截流模式:对重复业务进行节流控制,执行最后一次操作并取消其他操作,以便提高性能
  • 简单模板模式:通过格式化字符创串拼凑出试图,避免创建视图时大量节点操作,优化内存开销
  • 惰性模式:减少每次代码执行时重复性的分支判断,通过对对象重定义来屏蔽原对象中的分支判断
  • 参与者模式:在特定作用域中指定给定的函数,并将参数原封不动的传递、
  • 等待者模式:通过多个异步进程监听,来出发未
  • 来发生的动作

架构设计模式

  • 同步模块化模式:将复杂的系统分解成高内聚、低耦合的模块,使系统开发变得可控、可维护、可拓展、提高模块的复用率(SMD 请求发出后,无论模块是否存在,立即执行后续逻辑,实现模块开发对模块的立即引用
  • 异步模块模式:将复杂的系统分解成高内聚、低耦合的模块吗,使系统开发变得可控、可维护、提高模块的复用率(异步模块模式,请求发出后继续其他业务逻辑,知道模块加载完成执行后续的逻辑,实现模块开发中对模块加载完成后的引用)
  • widget 模式:借用web widget 思想将页面分解成部件,针对部件开发,最终组合成完整的页面
  • MVC 模式: 视图、控制器、模型,用一种业务逻辑、数据、视图分离的方式组织架构代码
  • MVP模式: 模型、视图、管理器:View 层不直接引用Model 层内的数据,而是通过Presenter 实现对Model 层的数据访问,多有层次的交互都发生在Presenter 层中
  • MVVM: 模型、视图、视图模型 : 为视图层量身定做一套视图模型,并在视图中创建属性和方法、为视图层绑定数据并实现交互

转载于:https://www.cnblogs.com/canghaiyimeng/p/9687663.html

第1章 简介   模式   JavaScript:基本概念   ECMAScript 5   JSLint   Console   第2章 基本技巧   编写可维护的代码   尽量少用全局变量   for循环   for-in循环   不要增加内置的原型   SWitch模式   避免使用隐式类型转换   使用parseInt()的数值约定   编码约定   命名约定   编写注释   编写API文档   编写可读性强的代码   同行互查   在正式发布时精简代码   运行JSLint   小结   第3章 字面量和构造函数   对象字面量   自定义构造函数   强制使用new的模式   数组字面量   JSON   正则表达式字面量   基本值类型包装器   错误对象   小结   第4章 函数   背景   回调模式   返回函数   自定义函数   即时函数   即时对象初始化   初始化时分支   函数属性——备忘模式   配置对象   Curry   小结   第5章 对象创建模式   命名空间模式   声明依赖关系   私有属性和方法   模块模式   沙箱模式   静态成员   对象常量   链模式   method()方法   小结   第6章 代码复用模式   传统与现代继承模式的比较   使用类式继承时的预期结果   类式继承模式#1——默认模式   类式继承模式#2——借用构造函数   类式继承模式#3——借用和设置原型   类式继承模式#4——共享原型   类式继承模式#5——临时构造函数   Klass   原型继承   通过复制属性实现继承   借用方法   小结   第7章 设计模式   单体模式   工厂模式   迭代器模式   装饰者模式   策略模式   外观模式   代理模式   中介者模式   观察者模式   小结   第8章 DOM和浏览器模式   关注分离   DOM脚本   事件   长期运行脚本   远程脚本   配置JavaScript   载入策略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值