2016-12-21 Oliver Wang
昨天在看一个拖拽库的时候,遇到了这么一段代码,感觉很有意思: ```jsx @sortable class DemoHOCItem extends React.Component { render() { return ( { this.props.children } ); } } ``` 查了一下之后发现这是 es7 的新语法,叫 Decorator。 语法 如果要定义一个 Decorator 的话,不难,其实每一个 decorator 就是一个 function,有三个参数,像这样 ```js let log = (target, name, de 继续阅读 »
2017-07-13 MoreFreeze
最近在写 airflow 的脚本时遇到一个问题,出于方便把 BaseSensorOperator 包了一层, 后来想改下超时时间和优先级等参数,发现改了没用,于是看了下源码,发现 Operator 都有个 apply_defaults 的装饰器,细看一看,实现挺巧妙,也解释了我遇到的问题。因为我的问题属于个人使用不当导致的, 所以就不放问题代码了,但我会在分析后给出一些使用方面要注意的地方和建议。 继续阅读 »
2013-11-28 veryyoung
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下: public interface Sourceable { public void method(); } public class Source implements Sourceable { @Override public void method() { System.out.println("the original 继续阅读 »
2014-03-28 Lingxian Kong
本文转载自极客范,原文链接:http://www.geekfan.net/7862/,转载请注明。 Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解。这些特性包括列表/集合/字典推导式,属性(property)、以及装饰器(decorator)。对于大部分特性来说,这些“中级”的语言特性有着完善的文档,并且易于学习。 但是这里有个例外,那就是描述符。至少对于我来说,描述符是Python语言核心中困扰我时间最长的一个特性。这里有几点原因如下: 有关描述符的官方文档相当难懂,而且没有包含优秀的示例告诉你为什么需要编写描述符(我得为Raymond Hettinger辩护一下,他写的其他主题的Python文章和视频对 继续阅读 »
2016-10-13 曹强
php
简介 在[PHP设计模式(七):设计模式分类][2]中我们提到过结构设计模式(Structural patterns),结构设计模式专注于设计对象(Object)和实例(Instance)的构建、组合过程。 结构设计模式包括下面七种设计模式: 适配器(Adapter) 桥接(Bridge) 合成(Composite) 装饰(Decorator) 外部(Facade) 轻量(Flyweight) 代理(Proxy) 请无视拗口的中文翻译。结构设计模式着重于低耦合、高复用、高可维护性、高拓展性的设计原则。 适配器模式 适配器模式是一种利用适配器将现有的实现,适配到已有接口的设计模式,最常见的例子就是变压器,将已 继续阅读 »