JS-语法设计模式

设计模式:代码经验的总结
设计模式都是面向对象的

工厂模式

工厂函数就是做一个对象创建的封装,并将创建的对象return出去

function newObj(name,age){
    var o = new Object();
    o.name = name;
    o.age = age;
    return o;
}
var obj = newObj();

单例模式:只允许存在一个实例的模式

var Instance = (function(){
    var obj;
    return function(){
        if(obj === undefined) obj = new Date();
        return obj;
    }
})();
var ibs = Instance();

观察者模式

又称发布订阅者模式,经典案例:事件监听,一个元素同时监听多个同类型事件,元素对象即为发布者,每一个事件处理函数即为订阅者。

策略模式

策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,从而避免很多if语句,曾经学过最简单的策略模式雏形就是使用数组的方式解决传入数字得到对应星期几问题的算法。

比如公司的年终奖是根据员工的工资和绩效来考核的,绩效为A的人,年终奖为工资的4倍,绩效为B的人,年终奖为工资的3倍,绩效为C的人,年终奖为工资的2倍

 var obj = {
    "A": function(salary) {
        return salary * 4;
    },
    "B" : function(salary) {
        return salary * 3;
    },
    "C" : function(salary) {
        return salary * 2;
    }
};
var calculateBouns =function(level,salary) {
    return obj[level](salary);
};
console.log(calculateBouns('A',10000)); // 40000

代理模式

代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问,为了不暴露执行对象的部分代码

 //三个对象
//用户委托快捷方式打开exe
//为了不暴露执行对象的部分代码
//男孩委托快递小哥给女孩送礼物
var girl = function(name){
    this.name = name;
}
//隐藏复杂,不愿意修改的的方法
var boy = function(girl){
    this.girl = girl;
    this.send = function(gift){
        alert("你好:"+this.girl.name+",给你一个"+gift);
    }
}
var proxyBro = function(girl){
    this.send = function(gift){
        new boy(girl).send(gift);
    }
}
var pro = new proxyBro(new girl("Lisa"));
pro.send("么么哒");
pro.send("玫瑰花");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值