Created
November 17, 2021 15:39
-
-
Save krzykamil/b1bd5e2823c6e5be096ddd195d185e43 to your computer and use it in GitHub Desktop.
example adapter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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