`

ruby delegate pattern

阅读更多
##
#delegate  方法介绍,用delegate使对象更灵活
class TickSeller
  def sell
    return 'Here is a ticket'
  end
end

#
class NoTickSeller
  def sell
    "Sorry-come back tomorrow"
  end
end

class TicketOffice < SimpleDelegator
  ##
  #程序初始化
  def initialize
    @seller = TickSeller.new
    @noseller = NoTickSeller.new
  end
  
  ##
  #置为是否可买
  def allow_sales(allow = true)
    __setobj__(allow ? @seller : @noseller)
    allow
  end

end


t = TicketOffice.new
t.allow_sales
p t.sell
t.allow_sales(false)
p t.sell
分享到:
评论

相关推荐

    简单的delegate实现

    在iOS开发中,Delegate是一种非常重要的设计模式,它允许对象之间进行通信,特别是当一个对象(委托者)需要通知另一个对象(委托对象)某些事件发生时。本文将深入讲解“简单的Delegate实现”,并以实际代码为例,...

    iOS Delegate传值通俗理解

    在iOS开发中,Delegate是一种非常重要的设计模式,用于对象间通信。它允许一个对象(委托者)通知另一个对象(委托对象)关于特定事件的发生。在iOS应用中,Delegate经常用于控制器间的通信,如UIViewController和...

    iPhone编程delegate示例

    在Objective-C中,`delegate`是一种关键的编程模式,用于实现对象间的通信。本文将深入探讨如何在iPhone编程中使用`delegate`,并以一个名为"MyDelegateSample"的示例项目来说明。 首先,`delegate`是Objective-C中...

    iOS学习笔记3---delegate五步曲,轻松学会使用delegate

    在iOS开发中,Delegate是一种非常重要的设计模式,它允许对象之间进行通信,使得一个对象能够对另一个对象的行为进行响应。本篇文章将通过“delegate五步曲”,帮助你深入理解并熟练掌握如何在iOS应用中使用Delegate...

    Delegate 小Demo

    在.NET框架中,Delegate是事件处理和回调机制的关键组成部分,它代表了一组方法的签名,允许我们传递方法作为参数或创建方法的组合。这个“Delegate小Demo”显然是一个用于学习和复习Delegate用法的示例项目。让我们...

    C# Delegate小例子

    在这个"C# Delegate小例子"中,我们将深入探讨Delegate的概念、使用方式以及它在实际编程中的应用。 1. **Delegate概念**: Delegate在C#中是一种类,它代表对方法的引用。这种引用是类型安全的,意味着在编译时就...

    Delegate小Demo

    在.NET框架中,Delegate是类型安全的函数指针,它允许我们引用方法并像操作对象一样操作它们。Delegate是事件处理、回调函数和多播委托等核心编程概念的基础。在这个"Delegate小Demo"中,我们将深入理解Delegate的...

    OC中以delegate形式页面传值

    页面间的通信是应用程序设计的关键部分,而`delegate`模式是OC中实现这种通信的一种常见方法。本篇文章将深入探讨如何在OC中使用`delegate`来实现页面间的传值。 **一、Delegate模式简介** Delegate模式是一种设计...

    Delegate&Block作回调

    本示例主要探讨了两种回调方式:Delegate(代理)和Block(块)。这两种方式各有特点,开发者可以根据实际需求选择合适的实现方式。 首先,我们来详细了解一下Delegate。Delegate是一种协议(Protocol)导向的回调...

    delegate一对多

    在iOS和macOS开发中,`delegate`模式是一种常见的设计模式,用于实现对象间的通信。在标题"delegate一对多"中,"一对多"指的是一个委托(delegate)对象可以同时处理多个其他对象的请求或事件。这种模式尤其在UI组件...

    代理delegate_execute.exe

    delegate_execute.exe

    swift-多delegate的使用

    在Swift编程语言中,Delegate是一种常见的设计模式,用于对象间通信。通常,一个类(委托者)会设置另一个类(委托)作为其代理,以便在特定事件发生时通知委托对象。然而,标题“swift-多delegate的使用”指出,...

    delegate与block的使用

    在iOS和macOS的开发中,Delegate和Block是两种非常重要的设计模式,它们用于实现对象间的通信和回调机制。Delegate通常用于实现一对多的关系,而Block则提供了更加灵活的代码块传递方式。这两种机制在软件设计中都有...

    C++中实现委托(delegate)

    网上有很多关于C++ delegate机制的文章,但都讲的是函数指针的内容,上周就C++中实现C#的delegate机制的问题研究了好几天,查看了很多相关资料,才解决了问题,现将我写的C++ delegate测试程序贴出来,希望能帮到有...

    C# Delegate讲解

    C# Delegate讲解 C# Delegate是.NET Framework中的一种重要机制,它允许开发者在程序中动态地调用方法。Delegate相当于函数指针,它指向程序中另一个以后会被调用的一个或多个方法。委托包含三个重要的信息:所调用...

    (Swift)SceneDelegate中启动UI

    在Swift编程语言中,SceneDelegate是iOS应用开发中的一个重要组件,尤其在iOS 13及更高版本中。SceneDelegate作为应用程序界面(UI)初始化和管理的核心部分,它负责处理应用程序的生命周期事件,如窗口创建、激活和...

    在qt的MVC模式中,运用控件在delegate中显示的方法

    在本主题中,我们将深入探讨如何在Qt的MVC环境中,利用Delegate来显示自定义控件。 **1. MVC模式简介** MVC模式由三个主要组件构成: - **Model**:数据模型,负责存储和管理数据。 - **View**:视图,负责数据的...

    ios设计模式delegate

    ios设计模式delegate 示例 ,导航功能的两个视图控制器(用push方式从一个窗口推到另一个窗口),第二个窗口创建两个按钮,标题分别为红色和绿色,点相应的按钮弹回前一个窗口,同时前一个窗口的背影色变成按钮标题...

    ios的视图之间使用Delegate传递数据

    `Delegate`协议是一种常用的方法,用于在不同对象间传递数据和控制流程。本文将深入探讨如何在iOS的视图之间使用Delegate来实现数据的传递,以及相关源码和工具的应用。 一、Delegate协议的原理与设置 Delegate...

    Qt 自定义Model和自定义Delegate

    在Qt框架中,模型(Model)和代理(Delegate)是数据可视化的核心组件,它们负责管理和展示数据。在本文中,我们将深入探讨如何在Qt中自定义Model和Delegate,以实现特定的功能,例如在ListView中展示带有图片和删除...

Global site tag (gtag.js) - Google Analytics