![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
Mrcuiyang
这个作者很懒,什么都没留下…
展开
-
程序设计原则
1.单一职责原则(Single Responsibility Principle, SRP) 一个类只负责一项职责。或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。 问题由来:如果一个类C有两个不同的职责R1,R2,如果R1因为需求变化修改C,可能引起R2的地方产生bug。2.开闭原则(Open-Closed Principle, OCP): 一个软件实体如原创 2017-01-11 12:21:35 · 390 阅读 · 0 评论 -
设计模式之桥接模式
//将抽象部分与它的实现部分分离,使他们都可以独立的变化// forEach函数的实现 // 可以看到, forEach函数并不关心fn里面的具体实现. fn里面的逻辑也不会被forEach函数的改写影响. forEach = function (ary, fn) { for (var i = 0, l = ary.length; i < l; i++) { var原创 2017-01-12 10:54:36 · 219 阅读 · 0 评论 -
设计模式之观察者模式
//定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变的时候,所有依赖于他的对象都得到通知并自动刷新// 观察者放在闭包,页面加载就立即执行 var Observer = (function(){ //消息队列私有 var _message = {}; return { //注册信息 regist:function(type,fn)原创 2017-01-12 09:35:49 · 263 阅读 · 0 评论 -
设计模式之装饰者模式
//动态的给对象添加一些额外的职责。就扩展功能而言,比生成子类更加灵活var decorator = function (input, fn) { //获取被装饰的对象 var input = document.getElementById(input); if(typeof input.onclick === 'function'){ //缓存原有的回调函数原创 2017-01-11 21:39:32 · 213 阅读 · 0 评论 -
设计模式之代理模式
//为其他对象提供一个代理以控制对这个对象的访问// 先声明美女对象 var Girl = function (name) { this.name = name; };// 这是dudu var Dudu = function (girl) { this.girl = girl; this.sendGift = function (gift) { consol原创 2017-01-11 21:12:15 · 255 阅读 · 0 评论 -
设计模式之适配器模式
//将一个接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的类可以一起工作。//下面例子体现了适配的思想 //自定义框架 var A = A||{}; //通过id获取元素 A.g = function (id) { return document.getElementById(id); } //为元素绑定事件 A.on = function (id, type原创 2017-01-11 20:51:47 · 209 阅读 · 0 评论 -
设计模式之外观模式
//facade模式定义了一个更高层级的接口,这个接口使得子系统更加容易使用。//在处理DOM0 DOM2的事件处理函数时候用到外观模式 function addEvent(element, type, handler) { if(element.addEventListener){ element.addEventListener(type, handler, false)原创 2017-01-11 20:17:21 · 203 阅读 · 0 评论 -
设计模式之单例模式
//保证一个类仅有一个实例,并提供一个访问它的全局访问点// 饿汉式 new对象时必然创建一个对象 var mySingleton = function () { /* 这里声明私有变量和方法 */ var privateVariable = 'something private'; function showPrivate() { console.log(pr原创 2017-01-11 19:52:30 · 201 阅读 · 0 评论 -
设计模式之构建者模式
//将一个复杂对象的构建与它的表示分离,使他们都可以独立变化//人 类 var Human = function (param) { this.skill = param && param.skill || '保密'; } Human.prototype = { getSkill: function () { return this.skill; } } /原创 2017-01-11 19:51:42 · 357 阅读 · 0 评论 -
设计模式之工厂方法模式
//定义一个用于创建对象的接口,让子类决定将哪一个类实例化。实际是将一个类的实例化延迟到其子类 //这样父类就成为抽象类 //鉴于js没有像强类型语言创建抽象类的语法,我们在 函数的原型 与 函数 中模拟抽象的父类与子类//子类,实例化在这里进行 var Factory = function (type, content) { if(this instanceof Factory){原创 2017-01-11 18:51:09 · 237 阅读 · 0 评论 -
设计模式之职责链模式
// 为解除请求的发送者与接收者的耦合,而是多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它。 function Fn1() { console.log(1); return "nextSuccessor"; } function Fn2() { console.log(2); var that = this; s原创 2017-01-12 11:19:32 · 295 阅读 · 0 评论