The core of the CMS Drupal is not based in object-orientation in version 7. For writing pluggable modules, it has a "hook" system, whereby you can alter the behavior (by altering passed data) for defined system functions.
For instance, Drupal ha and API through which you create arrays to define forms that are translated into HTML. There is a defined hook called
hook_form_alter whereby you can alter any form array after its created, and before its rendered, allowing you to change the form entirely. Similarly, you can do the same for queries, emails, etc generated through the API.
I am not well-versed in OO or design patterns, so background and expoundings are helpful. Also, I'm coming out of only PHP (and MySQL), so I'm not familiar with examples of how other languages do things.
Since these are all based on functions and callbacks, I wonder what object-oriented design patterns give you this functionality.