Skip to content

Instantly share code, notes, and snippets.

@krzykamil
Created November 17, 2021 15:39
Show Gist options
  • Save krzykamil/b1bd5e2823c6e5be096ddd195d185e43 to your computer and use it in GitHub Desktop.
Save krzykamil/b1bd5e2823c6e5be096ddd195d185e43 to your computer and use it in GitHub Desktop.
example adapter
class Dev
attr_accessor :level, :money, :tickets
def initialize
@level = (1..3).to_a.sample
@money = 0
@tickets = []
end
def take_ticket(ticket)
@tickets << (ticket.dev = self)
end
def finish_ticket(ticket)
ticket.finish
@tickets.delete ticket
end
end
class Ticket
attr_accessor :difficulty, :dev
def initialize(difficulty)
@difficulty = difficulty
@dev = nil
end
def finish
@dev.money += calculate_money
end
def calculate_money
(@difficulty * 50) * @dev.level
end
end
class OldTicket
attr_accessor :dev, :difficulty, :money
def initialize
@difficulty = (1..3).to_a.sample
@money = 10
end
def done
difficulty * money
end
end
class TicketAdapter
attr_accessor :dev
def initialize(old_ticket, difficulty)
@old_ticket = old_ticket
@old_ticket.difficulty = difficulty
@dev = nil
end
def finish
@dev.money += @old_ticket.done
end
end
dev = Dev.new
ticket = Ticket.new 5
dev.take_ticket ticket
dev.finish_ticket ticket
puts dev.money
some_old_ticket = OldTicket.new
old_ticket_adapted = TicketAdapter.new(some_old_ticket, 5)
dev.take_ticket old_ticket_adapted
dev.finish_ticket old_ticket_adapted
puts dev.money
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment