Skip to content

Instantly share code, notes, and snippets.

@mattapayne
Created June 1, 2020 21:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mattapayne/ed3e455256a49eee762573cd2fc1c301 to your computer and use it in GitHub Desktop.
Save mattapayne/ed3e455256a49eee762573cd2fc1c301 to your computer and use it in GitHub Desktop.
module Things
TYPE_ONE = 'type_one'.freeze
TYPE_TWO = 'type_two'.freeze
TYPE_THREE = 'type_three'.freeze
class ThingFactory
class << self
def call(type, args)
case type
when TYPE_ONE
TypeOne.new(args)
when TYPE_TWO
TypeTwo.new(args)
when TYPE_THREE
TypeThree.new(args)
end
end
end
end
class TypeOne
def initialize(args)
@args = args
end
def do_work
# do something using @args
end
end
class TypeTwo
def initialize(args)
@args = args
end
def do_work
# do something using @args
end
end
class TypeThree
def initialize(args)
@args = args
end
def do_work
# do something using @args
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment