zoukankan      html  css  js  c++  java
  • Ruby代理例子

    require 'delegate'

    class Assistant
     def initialize(name)
      @name = name
     end

     def read_email
      puts "(#{@name}) It's mostly spam."
     end

     def check_schedule
      puts "(#{@name}) You have a meeting today."
     end
    end

    class Manager < DelegateClass(Assistant)
     def initizlize(assistant)
      super(assistant)
     end

     def attend_meeting
      puts "please hold my calls"
     end
    end

    frank = Assistant.new("Frank")
    anne=Manager.new(frank)
    anne.attend_meeting   #=> please hold my calls
    anne.read_email      #=>(Frank) It's mostly spam.
    anne.check_schedule   #=>(Frank) You have a meeting today.

    =begin
    DelegateClass()是一种拟态方法,这种方法创建并返回一个新的Class..这个类会定义一个method_()方法,并把对它发生的调用转发到被封装的对象上,比如本例的Assistant对象. Manager类会继承这个method_missing()方法,因此它就成为被封装对象的一个代理.结果,Manager就会把自己无法识别的方法转发给它封装的Assistant.
    =end

  • 相关阅读:
    concurrent-锁
    字符串查找字符串
    指针作为函数返回值
    数组名作为函数参数
    指针和函数
    多级指针
    指针数组
    指针运算
    指针和数组
    const修饰的指针类型
  • 原文地址:https://www.cnblogs.com/leaf526/p/3643247.html
Copyright © 2011-2022 走看看