与装饰器设计模式等效的函数式编程是什么?
例如,你会怎么写这个特殊的例子 https://en.wikipedia.org/wiki/Decorator_pattern#First_example_(window/scrolling_scenario)功能性风格?
在函数式编程中,您可以将给定函数包装在新函数中。
给出一个与您的问题中引用的类似的人为的 Clojure 示例:
我原来的绘图功能:
(defn draw [& args]
; do some stuff
)
我的函数包装器:
; Add horizontal scrollbar
(defn add-horizontal-scrollbar [draw-fn]
(fn [& args]
(draw-horizontal-scrollbar)
(apply draw-fn args)))
; Add vertical scrollbar
(defn add-vertical-scrollbar [draw-fn]
(fn [& args]
(draw-vertical-scrollbar)
(apply draw-fn args)))
; Add both scrollbars
(defn add-scrollbars [draw-fn]
(add-vertical-scrollbar (add-horizontal-scrollbar draw-fn)))
它们返回一个新函数,可以在使用原始绘图函数的任何地方使用,但也可以绘制滚动条。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)