Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Person
- attr_reader :factory
- attr_reader :name
- def initialize(factory, name)
- @factory = factory
- @name = name
- end
- def coworkers
- @factory.list
- end
- def coworkers_count
- # the total size, minus yourself
- coworkers.size - 1
- end
- end
- class PersonFactory
- attr_reader :list
- def initialize
- @list = []
- end
- private def add(person)
- @list << person
- person
- end
- def create(*args)
- add Person.new(self, *args)
- end
- end
- icedragons_factory = PersonFactory.new
- workmad3_factory = PersonFactory.new
- jr = icedragons_factory.create 'IceDragonjr'
- icedragons_factory.create 'SomeDude'
- icedragons_factory.create 'Bacon'
- icedragons_factory.create 'ExtraDude'
- wjr = workmad3_factory.create 'Workmad3jr'
- workmad3_factory.create 'aPancake'
- workmad3_factory.create 'TheGreatBacon'
- jr.coworkers_count #=> 3
- wjr.coworkers_count #=> 2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement