├── .idea ├── design_patterns_in_ruby.iml ├── encodings.xml ├── misc.xml ├── modules.xml ├── scopes │ └── scope_settings.xml ├── vcs.xml └── workspace.xml ├── .ruby-gemset ├── .ruby-version ├── README ├── Rakefile ├── behavioral ├── chain_of_responsibility.rb ├── command1.rb ├── command2.rb ├── domain_function.rb ├── interpreter.rb ├── iterator1.rb ├── iterator2.rb ├── iterator3.rb ├── iterator4.rb ├── mediator.rb ├── memento.rb ├── observer1.rb ├── observer2.rb ├── observer3.rb ├── state.rb ├── strategy1.rb ├── strategy2.rb ├── template_method1.rb ├── template_method2.rb ├── template_method3.rb ├── visitor1.rb └── visitor2.rb ├── creational ├── abstract-factory.rb ├── builder1.rb ├── builder2.rb ├── factory-method.rb ├── lazy-initialization.rb ├── prototype.rb ├── singleton1.rb ├── singleton2.rb └── singleton3.rb ├── enterprise ├── data-access-object.rb ├── dci1.rb ├── dci2.rb ├── dci3.rb ├── dsl11.rb ├── dsl12.rb ├── dsl13.rb ├── dsl2.rb ├── hexagonal.rb ├── map-reduce.rb └── mvc.rb ├── meta_tricks ├── aspect_for_class_and_instance.rb ├── block_as_module.rb ├── class_field_and_instance_field_and_class_instance_field.rb ├── common_method_for_class_and_method.rb ├── data_inside_file.rb ├── locals_to_hash.rb ├── pipeable.rb ├── simple_dsl.rb └── utility_module.rb ├── notes.txt ├── problems └── monty_hall_problem.rb └── structural ├── adapter.rb ├── bridge.rb ├── composite.rb ├── decorator1.rb ├── decorator2.rb ├── decorator3.rb ├── facade.rb ├── flyweight.rb ├── proxy1.rb └── proxy2.rb /.idea/design_patterns_in_ruby.iml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/.idea/design_patterns_in_ruby.iml -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/.idea/encodings.xml -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/.idea/misc.xml -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/.idea/modules.xml -------------------------------------------------------------------------------- /.idea/scopes/scope_settings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/.idea/scopes/scope_settings.xml -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/.idea/vcs.xml -------------------------------------------------------------------------------- /.idea/workspace.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/.idea/workspace.xml -------------------------------------------------------------------------------- /.ruby-gemset: -------------------------------------------------------------------------------- 1 | dpr -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 3.3.4 -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Implementation of Design Patterns in Ruby 2 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/Rakefile -------------------------------------------------------------------------------- /behavioral/chain_of_responsibility.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/chain_of_responsibility.rb -------------------------------------------------------------------------------- /behavioral/command1.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/command1.rb -------------------------------------------------------------------------------- /behavioral/command2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/command2.rb -------------------------------------------------------------------------------- /behavioral/domain_function.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/domain_function.rb -------------------------------------------------------------------------------- /behavioral/interpreter.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/interpreter.rb -------------------------------------------------------------------------------- /behavioral/iterator1.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/iterator1.rb -------------------------------------------------------------------------------- /behavioral/iterator2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/iterator2.rb -------------------------------------------------------------------------------- /behavioral/iterator3.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/iterator3.rb -------------------------------------------------------------------------------- /behavioral/iterator4.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/iterator4.rb -------------------------------------------------------------------------------- /behavioral/mediator.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/mediator.rb -------------------------------------------------------------------------------- /behavioral/memento.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/memento.rb -------------------------------------------------------------------------------- /behavioral/observer1.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/observer1.rb -------------------------------------------------------------------------------- /behavioral/observer2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/observer2.rb -------------------------------------------------------------------------------- /behavioral/observer3.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/observer3.rb -------------------------------------------------------------------------------- /behavioral/state.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/state.rb -------------------------------------------------------------------------------- /behavioral/strategy1.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/strategy1.rb -------------------------------------------------------------------------------- /behavioral/strategy2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/strategy2.rb -------------------------------------------------------------------------------- /behavioral/template_method1.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/template_method1.rb -------------------------------------------------------------------------------- /behavioral/template_method2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/template_method2.rb -------------------------------------------------------------------------------- /behavioral/template_method3.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/template_method3.rb -------------------------------------------------------------------------------- /behavioral/visitor1.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/visitor1.rb -------------------------------------------------------------------------------- /behavioral/visitor2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/behavioral/visitor2.rb -------------------------------------------------------------------------------- /creational/abstract-factory.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/creational/abstract-factory.rb -------------------------------------------------------------------------------- /creational/builder1.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/creational/builder1.rb -------------------------------------------------------------------------------- /creational/builder2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/creational/builder2.rb -------------------------------------------------------------------------------- /creational/factory-method.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/creational/factory-method.rb -------------------------------------------------------------------------------- /creational/lazy-initialization.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/creational/lazy-initialization.rb -------------------------------------------------------------------------------- /creational/prototype.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/creational/prototype.rb -------------------------------------------------------------------------------- /creational/singleton1.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/creational/singleton1.rb -------------------------------------------------------------------------------- /creational/singleton2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/creational/singleton2.rb -------------------------------------------------------------------------------- /creational/singleton3.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/creational/singleton3.rb -------------------------------------------------------------------------------- /enterprise/data-access-object.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/enterprise/data-access-object.rb -------------------------------------------------------------------------------- /enterprise/dci1.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/enterprise/dci1.rb -------------------------------------------------------------------------------- /enterprise/dci2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/enterprise/dci2.rb -------------------------------------------------------------------------------- /enterprise/dci3.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/enterprise/dci3.rb -------------------------------------------------------------------------------- /enterprise/dsl11.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/enterprise/dsl11.rb -------------------------------------------------------------------------------- /enterprise/dsl12.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/enterprise/dsl12.rb -------------------------------------------------------------------------------- /enterprise/dsl13.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/enterprise/dsl13.rb -------------------------------------------------------------------------------- /enterprise/dsl2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/enterprise/dsl2.rb -------------------------------------------------------------------------------- /enterprise/hexagonal.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/enterprise/hexagonal.rb -------------------------------------------------------------------------------- /enterprise/map-reduce.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/enterprise/map-reduce.rb -------------------------------------------------------------------------------- /enterprise/mvc.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/enterprise/mvc.rb -------------------------------------------------------------------------------- /meta_tricks/aspect_for_class_and_instance.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/meta_tricks/aspect_for_class_and_instance.rb -------------------------------------------------------------------------------- /meta_tricks/block_as_module.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/meta_tricks/block_as_module.rb -------------------------------------------------------------------------------- /meta_tricks/class_field_and_instance_field_and_class_instance_field.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/meta_tricks/class_field_and_instance_field_and_class_instance_field.rb -------------------------------------------------------------------------------- /meta_tricks/common_method_for_class_and_method.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/meta_tricks/common_method_for_class_and_method.rb -------------------------------------------------------------------------------- /meta_tricks/data_inside_file.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/meta_tricks/data_inside_file.rb -------------------------------------------------------------------------------- /meta_tricks/locals_to_hash.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/meta_tricks/locals_to_hash.rb -------------------------------------------------------------------------------- /meta_tricks/pipeable.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/meta_tricks/pipeable.rb -------------------------------------------------------------------------------- /meta_tricks/simple_dsl.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/meta_tricks/simple_dsl.rb -------------------------------------------------------------------------------- /meta_tricks/utility_module.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/meta_tricks/utility_module.rb -------------------------------------------------------------------------------- /notes.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/notes.txt -------------------------------------------------------------------------------- /problems/monty_hall_problem.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/problems/monty_hall_problem.rb -------------------------------------------------------------------------------- /structural/adapter.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/structural/adapter.rb -------------------------------------------------------------------------------- /structural/bridge.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/structural/bridge.rb -------------------------------------------------------------------------------- /structural/composite.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/structural/composite.rb -------------------------------------------------------------------------------- /structural/decorator1.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/structural/decorator1.rb -------------------------------------------------------------------------------- /structural/decorator2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/structural/decorator2.rb -------------------------------------------------------------------------------- /structural/decorator3.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/structural/decorator3.rb -------------------------------------------------------------------------------- /structural/facade.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/structural/facade.rb -------------------------------------------------------------------------------- /structural/flyweight.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/structural/flyweight.rb -------------------------------------------------------------------------------- /structural/proxy1.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/structural/proxy1.rb -------------------------------------------------------------------------------- /structural/proxy2.rb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shvets/design_patterns_in_ruby/HEAD/structural/proxy2.rb --------------------------------------------------------------------------------