I like them a lot but I don't think you can go in thinking which design pattern to use or I want to use this pattern. It had to naturally arise in whatever you're designing
it really depends on the purpose of the code to determine if you use OOP or something more linear. Obviously quick scripting shouldn't warrant OOP, but if you are truely building an application to stand the test of time and enhancements, OOP is a must to keep the code size done, reusable, and overall clean. At least imho.
OOP is broken - absolutely nowhere where they tell you they do OOP is done by the book it's always hacked in a way, switched to functional few years back - haven't felt better