Skip to content
文档章节

装饰者模式

装饰者(decorator) 又称作包装器(wrapper),用在不改变原有对象功能和方法时,添加进去自己的方法。常见的手段有 AOP 等。

装饰器用来包装原有对象,形成一个新的对象,这个新对象提供了和原对象一样的对外接口,因此新对象对外来说是透明的。

举个例子,有个表单提交的对象(方法),对外提供调用服务。使用一段时间后,我们想要添加一个表单验证的功能,此时我们可以在 formSubmit 外包装一层,添加新的功能,同时对外提供与原 formSubmit 想通的接口。

js
var formSubmit = function (values) {
  console.log('表单提交');
};

// 包装新的 formSubmit, 注入新的功能
formSubmit = function (values) {
  // 添加新的内容
  validateFormData(values);
  // 执行原函数
  formSubmit(values);
};

装饰者其他内容可以参考 AOP 面相切面编程。