require 'forwardable'

Data = Struct.new(:name)

class Role
  extend Forwardable

  def_delegators :@data, :name=

  def initialize data
    @data = data
  end

  def operation
    self.name = 'name'
  end
end

class Context
  def initialize role
    @role = role
  end

  def interaction
    @role.operation
  end
end

data    = Data.new
role    = Role.new(data)
context = Context.new(role)
context.interaction