Ruby元编程技术详解Ruby Metaprogramming techniques ... 1. 使用单例类Use the singleton-class 当你想创建一个DSL来定义类信息时,最常见的问题是怎样表示信息来让框架的其它部分使用。以定义一个ActiveRecord模型对象为例: Q 这里令人感兴趣的是define_attr_method。在这个例子中我们需要获得Product类的单例类,但又不想修改ActiveRecord::Base。通过使用单例类我们达到了这个目的。我们为原来的方法取别名,再定义新的存取器(accessor)来返回值。如果ActiveRecord需要table 敶 name就可以直接调用存取器。这种动态创建方法和存取器的技术在单例类是很常见的,特别是Rails。 ...
基于2个网页-相关网页
Jeremy认为大多数开发者都没有正确的使用Ruby对象,所以他的话题比较高阶,谈论了诸如单例类(singleton classes)和instance_eval。
Jeremy believes that most programmers don't use Ruby's objects right, so his talk sheds some light onto advanced topics like singleton classes and the instance_eval.
这样分离出单例结构的代码,将有利于保持按单例模式使用类或不按单例模式使用类的灵活性。
This has the added benefit of separating singleton code from the class code leaving the flexibility to use several instances of the class or using the class as a singleton.
清单 3 内的单例显然更为准确,但更为重要的一点是它使用了 PHP 的 LSB 来引用适当的覆盖静态类。
The singleton in Listing 3 is certainly more concise, but what's important is the use of PHP's LSB to reference the appropriate overridden static attribute.
应用推荐