6. 装饰者模式

设计模式并非是难以理解, 或是难以应用到实践中的, 相反的, 设计模式恰恰代表了某些场景下的最佳实践! 这些设计模式通常被有经验的开发者们所采用。
设计模式是开发者们在开发过程中面临的一般问题的解决方案。 这些解决方案是众多开发者们经过长时间的实验和错误所总结出来的
本文将讲解前端 (javascript) 的设计模式概念!


装饰者模式, 顾名思义, 即一个类装饰另一个类, 其实装饰者模式与 继承 很类似, 但装饰者模式能够给不同的对象添加新行为

如下代码: DecorateSay 装饰了 Say, 但与继承不同 DecorateSay 保留了 Say 的方法

function Say(name) {
    this.name = name;
}

Say.prototype.hello = function() {
    return '你好,' + this.name;
}

// 装饰类
function DecorateSay(say) {
    this.say = say;
}

DecorateSay.prototype.hello = function() {
    return this.say.hello() + '先生';
}

var say = new Say('mtshen');
say = new DecorateSay(say);

由此可见, 装饰者模式比继承更加灵活, 因此, 当需要执行特殊行为的时候,
调用代码就可以根据需要有选择地, 按顺序地使用装饰功能来包装对象。

其他设计模式

单例模式: https://www.jianshu.com/p/4c0604f116ba
构造函数模式: https://www.jianshu.com/p/cf809d980459
建造者模式: https://www.jianshu.com/p/70cf4bb80549
简单工厂模式: https://www.jianshu.com/p/4293450926c2
抽象工厂模式: https://www.jianshu.com/p/d6138f36e6e2
外观模式: https://www.jianshu.com/p/179ae2a13c59

你可能感兴趣的:(6. 装饰者模式)