博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS常见的四种设计模式
阅读量:4602 次
发布时间:2019-06-09

本文共 2089 字,大约阅读时间需要 6 分钟。

1 工厂模式

简单的工厂模式可以理解为解决多个相似的问题;

function CreatePerson(name,age,sex) {    var obj = new Object();    obj.name = name;    obj.age = age;    obj.sex = sex;    obj.sayName = function(){        return this.name;    }    return obj;}var p1 = new CreatePerson("longen",'28','男');var p2 = new CreatePerson("tugenhua",'27','女');console.log(p1.name); // longenconsole.log(p1.age);  // 28console.log(p1.sex);  // 男console.log(p1.sayName()); // longenconsole.log(p2.name);  // tugenhuaconsole.log(p2.age);   // 27console.log(p2.sex);   // 女console.log(p2.sayName()); // tugenhua

 

2单例模式

只能被实例化(构造函数给实例添加属性与方法)一次

// 单体模式var Singleton = function(name){    this.name = name;};Singleton.prototype.getName = function(){    return this.name;}// 获取实例对象var getInstance = (function() {    var instance = null;    return function(name) {        if(!instance) {
//相当于一个一次性阀门,只能实例化一次 instance = new Singleton(name); } return instance; }})();// 测试单体模式的实例,所以a===bvar a = getInstance("aa");var b = getInstance("bb");

 

3 沙箱模式

将一些函数放到自执行函数里面,但要用闭包暴露接口,用变量接收暴露的接口,再调用里面的值,否则无法使用里面的值

let sandboxModel=(function(){    function sayName(){};    function sayAge(){};    return{        sayName:sayName,        sayAge:sayAge    }})()

 

4 发布者订阅模式

就例如如我们关注了某一个公众号,然后他对应的有新的消息就会给你推送,

//发布者与订阅模式    var shoeObj = {}; // 定义发布者    shoeObj.list = []; // 缓存列表 存放订阅者回调函数    // 增加订阅者    shoeObj.listen = function(fn) {        shoeObj.list.push(fn); // 订阅消息添加到缓存列表    }    // 发布消息    shoeObj.trigger = function() {            for (var i = 0, fn; fn = this.list[i++];) {                fn.apply(this, arguments);//第一个参数只是改变fn的this,            }        }     // 小红订阅如下消息    shoeObj.listen(function(color, size) {        console.log("颜色是:" + color);        console.log("尺码是:" + size);    });    // 小花订阅如下消息    shoeObj.listen(function(color, size) {        console.log("再次打印颜色是:" + color);        console.log("再次打印尺码是:" + size);    });    shoeObj.trigger("红色", 40);    shoeObj.trigger("黑色", 42);

 

代码实现逻辑是用数组存贮订阅者, 发布者回调函数里面通知的方式是遍历订阅者数组,并将发布者内容传入订阅者数组

更多设计模式请戳:

转载于:https://www.cnblogs.com/lexiaoyao1992/p/9759389.html

你可能感兴趣的文章
Python 和其他编程语言数据类型的比较
查看>>
T2695 桶哥的问题——送桶 题解
查看>>
HTML5 表单
查看>>
Android群英传》读书笔记 (3) 第六章 Android绘图机制与处理技巧 + 第七章 Android动画机制与使用技巧...
查看>>
关于微信公众平台测试号配置失败的问题
查看>>
【NOIP2001】统计单词个数
查看>>
linux常用端口
查看>>
异常处理
查看>>
/proc/uptime详解
查看>>
如何建立合适的索引?
查看>>
acwing 651. 逛画展
查看>>
(待完成)qbxt2019.05 总结12 - 趣味题目 鹰蛋
查看>>
[2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
查看>>
关于WPF程序只运行一个实例的方法
查看>>
图论:点分治
查看>>
mysql
查看>>
C/C++ 知识点---sizeof使用规则及陷阱分析(网摘)
查看>>
java小程序 示例
查看>>
前端开发在线小工具
查看>>
有关cookies使用方法
查看>>