设计模式之禅-装饰器模式疑问

发布于 2022-09-12 02:22:46 字数 187 浏览 34 评论 0

问题描述

  • 设计模式之禅-装饰器模式应用场景里第三个是:需要为一批的兄弟类进行改装或加装功能,当然是首选装饰模式
  • 需要为一批的兄弟类进行改装或加装功能如何理解

我的尝试

  • 在网上搜了一大圈,只写了这个应用场景,而没有解释,设计模式之禅里也没解释

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ゞ花落谁相伴 2022-09-19 02:22:46

兄弟类:顾名思义,一般代指 从同一父级继承的类。

为一批的兄弟类进行改装或加装功能:即 为从同一父级继承的类 添加或修改功能。

从同一父级继承的类,都需要添加自己独有的功能,否则也就没有意义。

而添加功能的一个最佳实践就是使用装饰器。

玩世 2022-09-19 02:22:46
  • 装饰类是继承关系的一个替代方案;
  • 装饰模式可以动态地扩展一个实现类的功能;
行至春深 2022-09-19 02:22:46

装饰器思想无非是用一个类/函数包装一个类/函数,然后把包装类/函数暴露出去代替原类/函数。

比如在js里你可以这样实现:

window.a = function () {
    console.log('123')
}

a 函数本身只打印一个123,现在像每次调用a的时候打印一个'aaa',那你可以装饰一下该函数:

let func = window.a
window.a = function () {
    console.log('aaaa')
    func()
}

这就是最简单的一个装饰器。

python中使用@语法糖实现类似的功能。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文