美文网首页
设计模式

设计模式

作者: 简人CC | 来源:发表于2017-09-15 13:59 被阅读0次
  • 构造函数
function Person(name,age){
    
    this.name = name 
    this.age = age
}

Person.prototype.show = function(){
    console.log('My name is'+this.name,'My age is '+this.age)
}
var p1 = new Person('Lii',18)
console.log(p1.show())
  • 混合模式(提取公用,节约内存)
var Person = function(name,age){
    this.name = name
    this.age = age
}
Person.prototype.sayHi=function(){
    console.log(this.name, this.age)
}
var p1 = new Person('Lii',18)
p1.sayHi()
  • 模块模式(利用闭包来访问内部)
var Person = (function(){
    var name = 'xxx'
    var sayName = function(){
        console.log(name)
    }

    return {
        name:name,
        sayName:sayName
    }
    
})()
var p1 = Person
p1.sayName()
  • 工厂模式
function person(name,age){
  var obj = {}
  obj.name = name
  obj.age = age
  return obj

}

var p1 = person('Lii',18)
cosole.log(p1.name,p1.age)
  • 单利模式
var Person = !function(){
    var instance;
    function init(){
        return {

        }
    }

    return {
        createPerson:function(){
            if(!instance){
                instance = init()
            }
            return instace
        }
    }
}()

var p1 = Person.createPerson() 
var p2 = Person.createPerson() 
  • 发布订阅模式
var xxx = (function(){
    var obj = {}//自定义事件存放

    var on = function(evt,handler){//push到数组
        obj[evt] = obj[evt] || [];
        obj[evt].push({
            handler:handler
        })
    }
    var fire = function(evt,args){//形成映射查找
        if(obj[!evt]) return;

        for(var i=0;i<obj[evt].length;i++){
            obj[evt][i].handler(args)
        }
    }

    return {
        on: on,
        fire: fire
    }
})()

xxx.on('m-coco',function(data){
    console.log('m-coco1')
})

xxx.on('m-coco',function(data){
    console.log('m-coco2')
})

xxx.fire('m-coco')
  • 发布订阅demo
var Event = (function(){
    const obj = {}

    const on = (evt,handler)=>{
        obj[evt] = obj[evt] || []
        obj[evt].push({
            handler:handler
        }) 
    };
    const fire = (evt,params)=>{
        if(!obj[evt]) return
        for(var i=0;i<obj[evt].length;i++){
            obj[evt][i].handler(params)
        }
    };

    const off = (evt)=>{
        if(obj[evt]){
            delete obj[evt]
        }else{
            console.log('此'+evt+'无效')
        }
 }
        
   return {
        on: on,
        fire: fire,
        off: off
    }
})()

Event.on('change',(val)=>{
    console.log('change..now val is ' + val)
})

Event.fire('change','饥人谷')
Event.off('change')

相关文章

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 设计模式笔记汇总

    目录 设计原则 “依赖倒置”原则 未完待续... 设计模式 设计模式——策略模式 设计模式——装饰者模式 设计模式...

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • 浅谈JS的一些设计模式

    @(书籍阅读)[JavaScript, 设计模式] 常见设计模式 设计模式简介 设计模式概念解读 设计模式的发展与...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • JavaJavascript基础进阶(十七)JS中常用的设计模式

    单利设计模式、构造原型设计模式、发布订阅设计模式、promise设计模式 单利模式 构造原型设计模式 最贴近OOP...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 第1章 设计模式概述

    一、设计模式的概念 二、设计模式的历史 三、设计模式的要素 四、设计模式的分类 ■ 创建型设计模式 ■ 结构型设计...

  • iOS设计模式(3)适配器模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(4)抽象工...

网友评论

      本文标题:设计模式

      本文链接:https://www.haomeiwen.com/subject/sovssxtx.html