问题描述 设计模式之禅-装饰器模式应用场景里第三个是:需要为一批的兄弟类进行改装或加装功能,当然是首选装饰模式 需要为一批的兄弟类进行改装或加装功能如何理解 我的尝试 在网上搜了一大圈,只写了这个应用场景,而没有解释,设计模式之禅里也没解释
兄弟类:顾名思义,一般代指 从同一父级继承的类。 为一批的兄弟类进行改装或加装功能:即 为从同一父级继承的类 添加或修改功能。 从同一父级继承的类,都需要添加自己独有的功能,否则也就没有意义。 而添加功能的一个最佳实践就是使用装饰器。
装饰器思想无非是用一个类/函数包装一个类/函数,然后把包装类/函数暴露出去代替原类/函数。 比如在js里你可以这样实现: window.a = function () { console.log('123') } a 函数本身只打印一个123,现在像每次调用a的时候打印一个'aaa',那你可以装饰一下该函数: let func = window.a window.a = function () { console.log('aaaa') func() } 这就是最简单的一个装饰器。 python中使用@语法糖实现类似的功能。
兄弟类:顾名思义,一般代指 从同一父级继承的类。
为一批的兄弟类进行改装或加装功能:即 为从同一父级继承的类 添加或修改功能。
从同一父级继承的类,都需要添加自己独有的功能,否则也就没有意义。
而添加功能的一个最佳实践就是使用装饰器。