Works really well for object orientated programming where you have plenty of resources and you are worriedabout the development changes and ensuring that your code deals well with future changes and enhancements.