`
Hooopo
  • 浏览: 335136 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

delegation

阅读更多
目的·概要

负责进行方法的委托(delegation)。

Delegator类会委托指定的对象执行某方法. 在使用Delegator类时, 要先继承它,然后对__getobj__方法进行再定义, 以便指定接受委托的对象.

SimpleDelegator是Delegator的一个实用例子, 它委托构造函数所接收到的对象来执行某方法.

DelegateClass(supperclass)函数负责定义并返回一个委托类, 该类会委托superclass类的某个对象来执行实例方法.


Delegator
SimpleDelegator
范例代码
require 'delegate'
foo = Object::new
def foo.test
  p 25
end
foo2 = SimpleDelegator::new(foo)
foo2.test # => 25

class ExtArray<DelegateClass(Array)
  def initialize()
    super([])
  end
end
a = ExtArray::new
p a.type  # => ExtArray
a.push 25
p a       # => [25]

Delegator
该类为给出的对象提供委托用的方法定义。

在构造函数内部那些被指定对象的实例方法中,定义委托方法, 使得那些不属于自己的方法可以向返回__getobj__的对象进行委托操作.

实例方法
Delegator#initialize(obj)
定义实例方法,使得obj中不属于自己的实例方法可以向返回__getobj__的对象进行委托操作.

Delegator#__getobj__
返回接受委托的对象. 默认情况下, 它会引发NotImplementError, 所以必须在子类中进行再定义.

SimpleDelegator
该类利用Delegator类, 委托指定对象执行某方法.

上级类
Delegator

类方法
SimpleDelegator.new(obj)
生成一个对象, 它委托obj来执行自身所拥有的方法。

实例方法
SimpleDelegator#__getobj__
返回接受委托的对象。

SimpleDelegator#__setobj__(obj)
将接受委托的对象变为obj。

请注意, 因为只有在生成时才会进行委托方法的定义, 所以即使接受委托的对象和obj之间存在实例方法上的差异, 也无法再次设定委托实例方法.

函数
DelegateClass(superclass)
定义并返回一个委托类, 它委托superclass类的实例来执行某方法.

SEE ALSO
Object#method_missing(method_symbol, ...)
若对象中尚未定义某方法时, 就会调用该方法. 使用该方法, 您可以将自己不知道的方法委托给其他的对象.

例:

def hoge.method_missing(message, *arg)
    @to_obj.send(message, *arg)
end
分享到:
评论

相关推荐

    剖析Java Event-Delegation Model

    ### 剖析Java Event-Delegation Model #### 前言 本文旨在深入解析Java Event-Delegation Model,特别是自Java 1.1引入以来的事件处理模型。通过理解事件委派机制的核心概念,我们可以更好地掌握Java GUI编程中的...

    Delegation委托写法项目实例

    在编程领域,委托(Delegation)是一种设计模式,它允许我们将行为或责任从一个对象传递给另一个对象。这种模式在很多编程语言中都有应用,包括iOS的Swift和Objective-C,以及C#等。在这个"Delegation委托写法项目...

    NFSv4delegation

    NFSv4委托(Delegation)是一种网络文件系统(NFS)版本4中的机制,旨在减少操作延迟,提高文件系统操作的效率。委托机制允许客户端在本地执行某些文件操作,而不需要每次都与服务器通信,从而在高延迟的网络环境中...

    Troubleshooting Kerberos Delegation

    然而,设置和配置Kerberos委派可能会遇到一些挑战,这就是本文《Troubleshooting Kerberos Delegation》关注的核心内容。 一、Kerberos委派基础 Kerberos委派允许经过身份验证的用户在不同服务之间传递其身份验证...

    my-delegation-poker-源码.rar

    【标题】"my-delegation-poker-源码.rar" 提供的是一个名为 "my-delegation-poker" 的项目源代码,通常这代表了一个用于进行委派扑克(Delegation Poker)的游戏或工具。委派扑克是一种敏捷开发中的管理工具,帮助...

    COM Delegation Using the COM Channel Hook Mechanism使用CCHM

    在COM中,一个组件可以透明地调用另一个组件的方法,这就是所谓的"COM Delegation"。COM Delegation的一个特殊实现是通过COM Channel Hook Mechanism(CCHM),它提供了一种拦截和修改COM通信的能力。 CCHM主要用于...

    Spark hadoop票据过期问题HDFS_DELEGATION_TOKEN

    当使用Kerberos时,系统会生成一种称为Delegation Tokens(委托令牌)的临时凭证,这些令牌用于在各个服务之间进行无密码的身份验证。在本案例中,Spark Streaming应用程序遇到的问题是HDFS_DELEGATION_TOKEN(HDFS...

    JavaScript 面试:事件传递机制和事件委托 Event Propagation & Event Delegation - 彭彭直播 at 2020/03/31

    JavaScript_面試_事件傳遞機制和事件委託_Event_Propagation_&_Event_Delegation_-

    terraform-dns-zone-delegation:用于委托DNS区域(特别是DNS区域)的Terraform模块

    以下是使用`terraform-dns-zone-delegation`模块进行DNS区域委托的一些关键知识点: 1. **Terraform模块**:Terraform模块是一种组织代码的方式,可以重复使用并抽象出复杂配置。在这个案例中,模块专门处理DNS区域...

    Delegation:在 C++11 中编译时通过模板没有虚函数调用的委托

    在C++编程中,"代表团(Delegation)"是一种设计模式,它允许一个对象将某些任务委托给另一个对象来执行,而不是直接实现这些任务。这种模式在很多情况下可以提高代码的灵活性和可扩展性,尤其是在类层次结构复杂或...

    Protecting Data Privacy in Publicly Verifiable Delegation of Matrix and Polynomial Functions

    本文《Protecting Data Privacy in Publicly Verifiable Delegation of Matrix and Polynomial Functions》探讨了如何在公开可验证的委托计算框架下保护数据隐私的问题,并提出了一系列针对矩阵乘法和多项式计算的...

    hadoop 2.9.0 yarn-default.xml 属性集

    21. yarn.resourcemanager.webapp.delegation-token-auth-filter.enabled:此属性控制是否启用委托令牌认证过滤器,默认值为true。 22. yarn.resourcemanager.webapp.cross-origin.enabled:此属性控制是否启用跨域...

    event-delegation:浏览器DOM事件的事件委托。 灵活,跨浏览器兼容且以打字稿为重点

    事件委托 浏览器DOM事件的事件委托。 灵活,跨浏览器兼容且以Typescript为重点。 快速链接 安装 CDN ...import EventDelegation from '@jjwesterkamp/event-delegation' EventDelegation命名空间对象

    php设计模式 Delegation(委托模式)

    委托模式是一种软件设计模式,它允许一个对象将请求转发给另一个对象来处理。...这种模式的核心思想是,一个对象(称为委托者)持有对另一个对象(称为被委托者或代理)的引用,并通过这个引用将某些任务转交给被委托者...

    authorization-delegation-schemas-1.0.7.jar

    官方版本,亲测可用

    JAVA_deletetree_delegation

    JAVA_deletetree_delegation 第1部分:类AbsTree中的定义删除第3课介绍了一个称为二类AbsTree的二进制搜索树的面向对象的定义,其中有两个子类Tree和DupTree。 在分配的这一部分中,您将以在类AbsTree中完成删除...

    authorization-delegation-schemas-1.0.7-sources.jar

    官方版本,亲测可用

    capability-delegation:一个API,允许开发人员将使用受限API的能力转移到框架树中的任何目标窗口

    能力委托将使用受限API的功能转移到框架树中的另一个window 。介绍什么是能力委派? JS中以受限方式可以使用Web中的许多功能。 例如: 大多数浏览器仅在用户最近与页面进行交互或允许浏览器从页面来源打开弹出窗口时...

    Verifiable Outsourced Computation with Full Delegation

    标题:“可验证外包计算与完全委托(Verifiable Outsourced Computation with Full Delegation)”体现了云计算环境下新的计算模式的研究进展。可验证计算(Verifiable Computation, VC)是指客户端可以将计算任务...

    my-delegation-poker

    虽然题目没有明确指出使用了哪种前端框架,但考虑到"my-delegation-poker"可能是一个Web应用,它可能利用了像React、Vue或Angular这样的现代前端框架。这些框架简化了UI组件的构建和状态管理,提高了代码的可维护性...

Global site tag (gtag.js) - Google Analytics