Let's suppose that as we are working with an Object you want to add additional builders that customize more and more of the object as you go along. So maybe you're designing the builders and you are adding new builders on top of that.
Whenever you need to build up additional information you inherit from a builder that you've have already got. You can use builders as inheritors of other builders and you can do it to infinity and this kind of solves the problem of your original builder (the root Builder) depending upon the sub builders because in the ideal scenario you would never have to go back into a person builder and modify it or indeed you'd never go back into a person info builder or a Job builder they are OK as they are. If you want to have additional builders then you use inheritance and this is strictly in line with the OCP because every single one of these builders os open for extension through inheritance but closed for modification.
https://github.com/PrettySolution/Des...