利用 method_missing 实现灵活编程
1. 委托的概念与实践
委托是编程中的一个基本概念。当创建一个对象需要执行某个操作,而另一个对象恰好能完成该操作时,不必将一个类的代码复制到另一个类,而是可以采用委托的方式。即给第一个对象提供第二个对象的引用,每次需要执行该操作时,调用第二个对象的相应方法。
例如,假设有一个秘密间谍机构使用 Document 类存储敏感材料,机构希望创建一种特殊的只读文档版本,访问该文档的程序只能在 5 秒内查看,超时文档将不可用,且文档内容可能随时变化,不能简单复制原始文档。这时可以创建一个文档包装类:
class SuperSecretDocument
def initialize(original_document, time_limit_seconds)
@original_document = original_document
@time_limit_seconds = time_limit_seconds
@create_time = Time.now
end
def time_expired?
Time.now - @create_time >= @time_limit_seconds
end
def check_for_expiration
raise 'Document no longer available' if time_expired?
end
def content
check_for_expiration
利用method_missing实现灵活编程
超级会员免费看
订阅专栏 解锁全文
1

被折叠的 条评论
为什么被折叠?



