美文网首页
常见设计模式

常见设计模式

作者: 饥人谷_風逝 | 来源:发表于2017-04-21 18:46 被阅读0次

模块模式

使用场景:进行封装时

//立即执行函数
var Person= (function(){
    //执行部分
    var prams
    function(){}
    //暴露接口
    return{
    }
})()

立即执行函数具有私有作用域,可以将执行代码封装,然后通过return来提供接口

工厂模式

使用场景:只需要简单的创建一个对象

function createPerson(opts){
    var person={}
    person.action1: function(){}
    return person;
}

基础版的构造函数模式(无法通过instance of 获得其创建者),使用时直接传入参数获得对象。var p1 = createPerson(opts)

构造函数模式

使用场景:一个组件,需要有独立的功能,稍微复杂时

function Person(){
    this.pram1
    this.pram2
}
Person.prototype.xxx=

使用函数和原型链构造一个类,使用时通过new来创建新的实例对象

混合模式

使用场景:涉及到继承时
即构造函数模式及其继承的实现
实现继承的方法有
http://www.jianshu.com/p/d18471b1064a

  • 使用prototype,并利用空对象作为中介
  • 拷贝继承
  • Object.create

单例模式

使用场景:得到一个独一无二恒定的对象

var Pepple =(function(){
    //私有变量及方法
    var instance;
    function init() {
        //define&do something
        return{
        }
    }
    //公有变量和方法
    return{
        //确保只有一个实例
        createPeople:function(){
            if(!instance){
                instance = init();
        }
            return instance;
    }
}()) 

//obj1和obj2是相等的
var obj1 = People.getInstance()
var obj2 = People.getInstance()

发布订阅模式

var Eventcenter =(function(){
    var events = {} 
    function on(evt,handler){
        events[evt] = events[evt] || [];//初始化为数组,以便加入多个handler
        events[evt].push({
            handler:handler 
        })
    }
    
    function one(evt,handler){
        events[evt] = events[evt] || [];
        events[evt].push({
            handler:handler,
            one:true
                } 
        })
    }
    function off(evt,handler){
        if (!handler){
        events[evt] = []
        }else{
            events[evt].remove({handler:handler},1)||           events[evt].remove({handler:handler,one:true},1)
        }
    }   
    function fire(evt,args){
        if(!events[evt]){
        return;
        }
        for(var i=0;i<events[evt].length;i++){
            events[evt][i].handler(args);
            if (events[evt][i].one){
            events[evt].splice(i,1)
            i -= 1
            }
        }
    }
    return {
        on: on,
        one: one,
        off: off,
        fire: fire
    }   
})();

相关文章

  • 浅谈JS的一些设计模式

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

  • 设计模式

    常见的设计模式有哪些? 常见的工厂模式,代理模式,模板方法模式,责任链模式,单例模式,包装设计模式,策略模式等。手...

  • 设计模式

    Android开发中常见的设计模式Java设计模式:23种设计模式全面解析(超级详细)Android的设计模式-设...

  • 单件设计模式

    一、定义 设计模式 设计模式就是一种更好的编写代码方案。 常见设计模式 工厂设计模式、抽象工厂设计模式、抽象工厂设...

  • spring 设计模式篇(前)

    设计模式俗称:套路 一、spring常见设计模式 (23种设计模式) 创建型:工厂方法模式、抽象工厂模式、建造者...

  • 组合模式

    设计模式系列7--组合模式 《Objective-c 编程之道 iOS 设计模式解析》 - 组合模式 常见组合模式...

  • java涨薪技能

    一:常见模式与工具 学习Java技术体系,设计模式,流行的框架与组件是必不可少的: 常见的设计模式,编码必备 Sp...

  • 为什么说 Java 程序员到了必须掌握 Spring Boot

    一:常见模式与工具 学习Java技术体系,设计模式,流行的框架与组件是必不可少的: 常见的设计模式,编码必备 Sp...

  • 金三银四跳槽涨薪50%?你需要掌握这些技术点!

    一:常见模式与工具 学习Java技术体系,设计模式,流行的框架与组件是必不可少的: 常见的设计模式,编码必备 Sp...

  • Java的常用设计模式详解

    引言 说起设计模式,很多编程语言的设计模式大同小异,而且设计模式很多,这里介绍一下java的几种常见的设计模式,其...

网友评论

      本文标题:常见设计模式

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