Skip to content

Commit

Permalink
Use registry and register.
Browse files Browse the repository at this point in the history
  • Loading branch information
liijunwei committed Apr 20, 2022
1 parent af9f05a commit 869bf59
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions oop/99-Bottles-of-OOP/lib/bottles.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,23 @@ def initialize(number)
end

def self.for(number)
[BottleNumber6, BottleNumber1, BottleNumber0, BottleNumber]
.find {|candidate| candidate.handle?(number)}.new(number)
registry.find {|candidate| candidate.handle?(number)}.new(number)
end

def self.handle?(number)
true
end

def self.registry
@registry ||= []
end

def self.register(candidate)
registry.prepend(candidate)
end

BottleNumber.register(self)

def container
"bottles"
end
Expand All @@ -40,6 +49,8 @@ def to_s
end

class BottleNumber0 < BottleNumber
BottleNumber.register(self)

def self.handle?(number)
number == 0
end
Expand All @@ -58,6 +69,8 @@ def successor
end

class BottleNumber1 < BottleNumber
BottleNumber.register(self)

def self.handle?(number)
number == 1
end
Expand All @@ -72,6 +85,8 @@ def pronoun
end

class BottleNumber6 < BottleNumber
BottleNumber.register(self)

def self.handle?(number)
number == 6
end
Expand Down

0 comments on commit 869bf59

Please sign in to comment.