These embedded policy mechanisms routinely manifest themselves as multiple, monolithic, conditional expressions. Discussion Replace the many, monolithic, conditional constructs with a Strategy inheritance hierarchy and dynamic binding. Identify the protocol that provides the appropriate level of abstraction, control, and interchangeability for the client. Specify this protocol in an abstract base class. Move all related conditional code into their own concrete derived classes.
Strategies can provide different implementations of the same behavior.
This sounds exactly like the intent of the Bridge pattern. The apparent overlap can be explained by observing that both patterns employ the same composition-delegation structure. The Strategy pattern should only be used when the variation in behavior is relevant to clients. If this criteria is not satisfied, the additional abstraction and effort necessary to implement the Strategy pattern is not justified. There are two implementations for Strategy.