JavaScript设计模式
一 ,什么是设计模式
○设计模式是一种固定的解决问题的方式
○是一套经过代码设计经验总结优化之后的固定的方式
○是软件工程的基础,是代码的基石脉络
○是一套经过反复使用、多人知晓的、经过分类的、代码设计经验的总结
○为了代码的可重用性、让代码更容易被他人理解、保证代码的可靠性。设计模式使代码的编写真正的工程化;设计模式是软件工程的基石脉络,如同大厦的结构
2,设计模式的分类(W3C平台)
○构造器模式,模块化模式,暴露模块模式,单例模式,中介者模式,原型模式,命令模式,外观模式,工厂模式,Mixin模式,装饰模式,亨元(Flyweight)模式,MVC模式,MVP模式,MVVM模式,组合模式,适配器模式,外观模式,观察者模式,迭代器模式,惰性初始模式,代理模式,建造者模式,...
二、单例模式
●单个实例,多次操作只操作(产生)一个实例
○应用:
■一个项目中所有的信息提示框只需要有一个即可
●改内容,改样式
■贪吃蛇中的食物对象
●优势:节省性能,提升执行速度
○语法:
三、工厂模式
●流水线,多次创建多个具有相同属性名相同方法功能的不同对象
●工厂模式的标志:原料(创建基础对象),加工(给基础对象添加属性或方法),出厂(将基础对象返回到外部)
●相互独立,分别控制,互不干扰
四、抽象工厂模式
●在工厂模式的基础上进行二次封装,将相同的属性值再次封装
五、适配器模式
●适配器,用来将不符合功能要求的数据,包装成符合功能要求的数据
●需求:
○已知功能A,要接受类型a的数据
○现有类型b的数据
○怎么办?
■改造功能A,能接受类型b的数据
■改造类型b的数据,改造成类型a的数据
■创建一个适配器,让类型b的数据看起来像类型a的数据
六、观察者模式
●观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。
○发布者,被观察者
○订阅者,观察者
●发布者发布或更新信息,订阅者接收信息,并根据新的变化做出相应的处理
●使用观察者模式的好处:
○支持简单的广播通信,自动通知所有已经订阅过的对象。
○页面载入后目标对象很容易与观察者存在一种动态关联,增加了灵活性。
○目标对象与观察者之间的抽象耦合关系能够单独扩展以及重用。
●案例:自定义事件监听系统
七、代理模式
●代理模式分成两个部分,一个部分是本体:即为你想要实现的功能;另一部分为代理;代理可以代替本体实例化;
●代理一般使用在非常耗时的数据上,也会用在体积十分庞大的本体上
●劫持系统功能,拦截数据或执行动作或执行时机,完成其他功能或数据的使用
●应用:
○服务器代理解决跨域
■客户端a,请求服务器B的数据,跨域了,被阻止
■搭建一个服务器A,由服务器A,请求服务器B,获取到服务器B的数据
■客户端a,请求自己搭建的服务器A,服务器A将请求到的服务器B的数据给客户端a
○事件委托
○setter和getter的使用
八、策略模式
●策略,计划,规划,可能执行的功能
●策略模式的核心,就是分支选择
●根据程序执行过程中可能会产生的变化或状态选择执行不同的功能
●应用:
○状态的变化:单个按钮,多个功能。烟花对象的区分。
○数据的变化:所有的函数的参数的默认值处理
●不使用分支语句实现策略模式
○配合对象
九、MVC模式
●MVC模式,全名:Model View Controller,模型、视图、控制器
○ M:模型:按照要求来取出数据
○ V:视图:用户直观看到的页面
○ C:控制器:向系统发出指令的工具
●工作流程:
a浏览器,调用控制器,对他发出指令
b控制器,按指令选取一个合适的模型
c模型,按控制器指令取出相应的数据
d控制器,按指令取出相应的视图
e把第三步取到的数据按照用户想要的样子在视图显示出来
●如:轮播图
○模型:图片数据
○视图:轮播图如何切换(左右,上下,淡入淡出)
○控制器:核心功能(绑定事件,切换索引,调取数据,调取视图)
十、组合模式
1 组合模式:把多个对象组成树状结构来表示局部与整体,使得用户可以同时操作单个对象或对象的组合。
2 对于创建动态用户界面来说,组合模式可以算是为其量身定做的,因为HTML结构正好符合组合模式适用场景的结构。
3 组合模式擅长对大批量对象进行操作,转为组织这类对象把操作从一个层次向下一个层次传递设计,借此可以弱化对象间的耦合关系并且可以互换使用一些类或者实例,使代码模块化程度更高,维护更容易。
4 简单的说,组合模式是将一批子对象组织为树形结构,一条顶层的命令会操作树中所有的下属子对象。提高了代码的模块化程度,对于动态的HTML界面具有很强的适用性。
5 要想使用组合模式,得先具备组合器