Skip to content

Instantly share code, notes, and snippets.

@gcao
Created January 19, 2013 23:53

Revisions

  1. gcao created this gist Jan 19, 2013.
    32 changes: 32 additions & 0 deletions dci_example.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    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