The Abstract Factory Pattern in Ruby (video)
The Abstract Factory Pattern allows you to do is to isolate conditional instantiations of related objects so that your client code can be extended without changing it.
This is important because this is how you can extend your code, without changing it. It’s called the open/closed principle, which says classes should be open for extension but closed for modification.
Youtube link: https://youtu.be/MVYlbbk_Fag