javascript模块,单例和观察者模式(代码片段)

author author     2023-01-21     190

关键词:

// Module Pattern
var Module = function() 
    _private1 = "private";
    _history = [];

    function _privateReturner() 
        return _private1;
    

    function _privateSender(set) 
        _history.push("From "+_private1+" to "+set);
        _private1 = set;
    

    function _getHistory() 
        return _history;
    

    return 
        publicReturner: _privateReturner,
        publicSender: _privateSender,
        publicHistory: _getHistory
    
;
/*
var mod = new Module();
console.log(mod._private1); // undefined
console.log(mod.publicReturner()); // private
mod.publicSender("fishly");
mod.publicSender("fishly2");
mod.publicSender("bob");
mod.publicSender("kevin");
console.log(mod.publicReturner()); // fishly
console.log(mod.publicHistory());
*/

// Singleton Pattern
var Singleton = (function() 
    var _private1 = 1;
    var _private2 = 2;
    var _total = 0;

    function _privateFunc() 
        _total = _private1 + _private2;
    

    function getter() 
        return _total;
    

    function setterReset(newVar) 
        _total = newVar;
    

    return 
        getter: getter,
        setterReset: setterReset,
        publicVar: 1,
        changePrivate: function() 
            _privateFunc();
        
    
)();
/*
Singleton.setterReset(0);
console.log(Singleton.getter());
Singleton.changePrivate();
console.log(Singleton.getter());
*/

// Observer pattern
function Observer() 
    this.fns = [];


Observer.prototype = 
    subscribe: function(fn) 
        this.fns.push(fn);
    ,

    unsubscribe: function(fn) 
        this.fns = this.fns.filter(
            function(el) 
                if ( el !== fn ) 
                    return el;
                
            
        );
    ,

    fire: function(o, thisObj) 
        var scope = thisObj || window;
        this.fns.forEach(
            function(el) 
                el.call(scope, o);
            
        );
    
;
/*
var o = new Observer;
o.fire('here is my data');

var fn = function fn() 
    console.log('data data');
;
var fn3 = function fn3() 
    console.log('data data3 ');
;
o.subscribe(fn);
o.subscribe(fn3);
o.unsubscribe(fn);
o.fire('here is my data');
*/

javascript设计模式(代码片段)

JavaScript设计模式设计模式概念经过代码设计经验总结之后设计出的一种固定解决问题的方式设计模式作用代码复用保证代码可靠性将编程工程化更易被他人理解设计模式的分类(W3C平台)构造器模式,模块化模式,暴露模块模式,... 查看详情

springboot响应消息message简单封装单例和原型模式

直接上代码:1、定义静态方法importcom.alibaba.fastjson.JSON;publicclassMessageUtilsimplementsCloneable{privatestaticfinalMessageUtilsinstance=newMessageUtils();  //单例模式publicMessageUtilsclone(){try{return(MessageUt 查看详情

单例和注册表设计模式有啥区别

】单例和注册表设计模式有啥区别【英文标题】:What\'sthedifferencebetweenSingletonandRegistrydesignpattern单例和注册表设计模式有什么区别【发布时间】:2013-05-2014:42:50【问题描述】:我对这两种模式有些混淆:单身检查实例是否存在返... 查看详情

javascript设计模式

单例模式(Singleton)工厂模式(Factory)桥接模式(Bridge)组合模式(Composite)门面模式(Facade)适配器模式(Adapter)装饰者模式(Decorator)享元模式(Flyweight)代理模式(Proxy)观察者模式(Observer)命令模式(Command)下面代... 查看详情

前端设计模式(代码片段)

... 2.工厂模式;  3.策略模式;  4.代理模式;  5.观察者模式;  6.模块模式;  7.命令模式;一、单例模式  这种设计模式的思想是确保一个类只有唯一实例,一般用于全局缓存,比如全局window,唯一登录浮 查看详情

单例和多例的区别

单例多例需要搞明白两个问题:1. 什么是单例多例;2. 如何产生单例多例;3. 为什么要用单例多例4. 什么时候用单例,什么时候用多例;1. 什么是单例、多例:所谓单例就是所有的请求都用一个对象来处理,比... 查看详情

js设计模式(代码片段)

...造器模式Constructor模块模式Module揭示模块模式RevealingModule观察者模式Observer发布订阅模式Pub 查看详情

一文搞懂│工厂模式单例模式策略模式适配器模式观察者模式的原理和使用(代码片段)

...🎈单例模式🎈策略模式🎈适配器模式🎈观察者模式🎈工厂模式工厂模式的原理作用:就是你只要传你需要的类进去,你就能得到他的实例化对象其实工厂就是帮你实例化你所需要的类<?php/***工厂... 查看详情

一文搞懂│工厂模式单例模式策略模式适配器模式观察者模式的原理和使用(代码片段)

...🎈单例模式🎈策略模式🎈适配器模式🎈观察者模式🎈工厂模式工厂模式的原理作用:就是你只要传你需要的类进去,你就能得到他的实例化对象其实工厂就是帮你实例化你所需要的类<?php/***工厂... 查看详情

javascript设计模式--行为型--设计模式之observer观察者模式(19)(代码片段)

         JAVASCRIPT设计模式是本人根据GOF的设计模式写的博客记录。使用JAVASCRIPT语言来实现主体功能,所以不可能像C++,JAVA等面向对象语言一样严谨,大部分程序都附上了JAVASCRIPT代码,代码只是实现了... 查看详情

javascript设计模式——观察者模式

观察者模式,又称发布-订阅模式或消息机制,定义了一种依赖关系,解决了主题对象与观察者之间功能的耦合。通过运用观察者模式,可以解决团队开发中的模块间通讯问题,这是模块间解耦的一种可行方案。首先,我们来把... 查看详情

4创建型模式之单例模式__多线程下的懒汉式单例和饿汉式单例

//1"懒汉"模式虽然有优点,但是每次调用GetInstance()静态方法时,必须判断                  //     NULL==m_instance,使程序相对开销增大。  &nb... 查看详情

javascript常见的设计模式(代码片段)

文章目录设计模式工厂模式简单工厂抽象工厂单例模式装饰器模式代理模式观察者模式(发布-订阅模式)设计模式设计模式:设计模式是解决某个特定场景下对某种问题的解决方案。因此,当我们遇到合适的场景... 查看详情

单例和多例的区别

单例多例需要搞明白两个问题:1. 什么是单例多例;2. 如何产生单例多例;3. 为什么要用单例多例4. 什么时候用单例,什么时候用多例;1. 什么是单例、多例:所谓单例就是所有的请求都用一个对象来处理,比... 查看详情

单例和多例的区别

单例多例需要搞明白两个问题:1. 什么是单例多例;2. 如何产生单例多例;3. 为什么要用单例多例4. 什么时候用单例,什么时候用多例;1. 什么是单例、多例:所谓单例就是所有的请求都用一个对象来处理,比... 查看详情

gof23种设计模式-单例模式(代码片段)

...行为型模式:–模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。?常见的五种单例模式实现方式–主要:?饿汉式(线程安全,调用... 查看详情

javascript面向对象-面试题实例

/从设计到模式  //设计模式简介  //设计  //模式  //分开  //从设计到模式    //23种设计模式      //创建型        //工厂模式(工厂方法模式,抽象工厂模式,建造者模式)        //单... 查看详情

javascript【设计模式】观察者模式(代码片段)

查看详情