Observer
Spot the polling-loop smell, implement subscribe/notify/unsubscribe on a class, and trace the lapsed listener leak that makes forgotten detach calls eat memory silently.
Strategy
Recognize the 'growing switch on type' smell, extract each branch into a swappable algorithm object or lambda, and spot the same shape inside Array.sort, Python sorted(key=…), and Java Comparator.
State
Rotate the multi-method switch(mode) matrix into one class per mode, push transition decisions onto the modes themselves, and trace the silent-failure shape where the host re-grows an instanceof ladder before delegating.
Command
Freeze each button-handler call into an object holding its own execute and undo, watch the same list of objects become an undo stack or a job queue when you swap the consumer, and spot the shape in Java Runnable, Swing AbstractAction, Redux actions, and Celery or BullMQ job queues.
Chain of Responsibility
Pull each if from checkAccess into a one-method class holding one next reference, watch a request walk the chain choosing handle/pass/mutate-pass at every box, and spot the same shape in Express middleware, ASP.NET pipelines, Servlet filters, Python try/except, and DOM event bubbling.
Mediator
Collapse N(N-1) peer imports into one central coordinator that holds the rules, watch the same shape inside MVC controllers, MediatR's _sender.Send, and useReducer's dispatch, and recognize when the hub drifts toward a god object.