美文网首页
常用设计模式

常用设计模式

作者: 字母31 | 来源:发表于2017-12-23 21:09 被阅读0次
//构造函数
//通过 new 返回一个新的对象
function Person(name,age) {
    this.name = name
    this.age = age
}
Person.prototype.sayName = function() {
    console.log(this.name)
}
var person1 = new Person('xiaoming',2)
var person2 = new Person('xiaohong',3)


//混合模式
//构造函数以及继承
function Person(name,age) {
    this.name = name
    this.age = age
}
Person.prototype.sayName = function() {
    console.log(this.name)
}
function Student(name,age,number) {
    Person.call(this,name,age)
    this.number = number
}
Student.prototype = Object.create(Person.prototype)
Student.prototype.sayNumber = function() {
    console.log(this.number)
}
var student1 = new Student('xiaoming',3,4)


//模块模式
//主要是用闭包立即执行函数实现
var Person = (function(){
    var name = 'xiaoming'
    var sayName = function(){
        console.log(name)
    }
    return {
        name:name,
        sayName:sayName
    }
})()
Person
Person.sayName()


//工厂模式
function createPerson(name) {
    var person = {
        name: name
    }
    person.sayName = function() {
        console.log(this.name)
    }
    return person
}
var person3 = createPerson('xiaoming')
person3.sayName()


//单例模式
var Person = (function() {
    var instance
    function init(name) {
        return {
            name: name
        }
    }
    return {
        createPerson: function(name) {
            if(!instance){
                instance = init(name)
            }
            return instance
        }
    }
})()
Person.createPerson('xioming') //{"name" :"xiaoming"}
Person.createPerson('xiohong') //{"name" :"xiaoming"}

//发布订阅模式
var EvenCenter = (function() {
    var events = {}
    function on(evt,handler) {
        events[evt] = events[evt] || []
        events[evt].push({
            handler:handler
        })
    }
    function fire(evt,args) {
        if(!events[evt]){
            return
        }
        for(var i=0;i<events[evt].length;i++) {
            events[evt][i].handler(args)
        }
    }
    function off(evt) {
        delete events[evt]
    }
    return {
        on:on,
        fire:fire,
        off:off
    }
})()
EventCenter.on('change', function(val){
    console.log('change...  now val is ' + val);  
});
EventCenter.fire('change', '饥人谷');
EventCenter.off('changer');
//

相关文章

  • Java 常用设计模式简例

    简述Java常用设计模式 简述Java常用设计模式及设计原则 strate---------策略模式针对接口编程,...

  • java单例模式与线程安全

    设计模式在软件架构设计中被经常使用,掌握常用的设计模式对于设计软件系统非常重要。单例模式作为设计模式中最简单和常用...

  • 知识复盘

    1:熟练使用Android常用性能调优 2:Java常用设计模式 3:Android常用设计模式(架构) 4:An...

  • 设计模式

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

  • 常用设计模式介绍

    常用设计模式介绍

  • 工厂模式

    安卓常用的设计模式 工厂模式(Factory Pattern)是 Android中最常用的设计模式之一。这种类型的...

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • 设计模式

    软件开发中常用设计模式和设计原则有哪些? ##设计模式: * 1、简单工厂模式(Factory) * 2、策略模式...

  • C++常用设计模式

    C++常用设计模式。

  • Strategy(策略) - java 源码中的策略模式

    标签(空格分隔): 设计模式 前言 Strategy(策略)设计模式是设计架构时候常用到的设计模式之一。我们开发中...

网友评论

      本文标题:常用设计模式

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