【JS常见设计模式】装饰器模式
装饰器模式
在不改变原对象的基础上,通过对其进行包装扩展,使原有对象可以满足用户的更复杂需求,而不会影响从这个类中派生的其他对象
// 主类
function Girl(name) {
this.name = name
}
// 主类公共方法
Girl.prototype.show = function show() {
console.log('一个叫' + this.name + '女孩')
}
// 装饰器
function Decorator(girl) {
this.name = "装饰器";
this.girl = girl;
}
// 装饰器原型
Decorator.prototype = {
constructor: Decorator,
show: function show() {
this.girl.show();
this.addLipstick();
this.addBag();
},
addBag: function addBag() {
console.log('装饰个包包')
},
addLipstick: function addBag() {
console.log('装饰个口红')
}
}
let girl1 = new Girl('A');
girl1.show() // 一个叫A女孩
console.log('--------------------')
let newGirl1 = new Decorator(girl1);
newGirl1.show() // 一个叫A女孩 装饰个包包 装饰个口红