Patterns: Provider vs. Plugin vs. Strategy – level 300

Previously I
made an implementation and called it the Provider pattern
.  After some good
discussion, I must redefine what I implemented.  I implemented something that
had major traits of Provider, Plugin, and Strategy.  I implemented a Repository
class that used a configuration service to get the assembly and type of the
class to load.  This class loads the appropriate type that implements my
interface.  My implementation implements every element of Provider except that
instead of an abstract base class for contract, I use an interface.  That breaks
the definition.  Strategy is defined as using interfaces, but in my
implementation uses a configuration item to dynamically load the concrete
implementation via reflection, so I’ve added something not explicitly not
defined in the pattern.

I have a feeling that our vocabulary is getting a bit muddled because we now
have pattern names from different sources, and they overlap quite a bit.  I
don’t feel that I can use a pattern name:  I have to define it first so that
fellow developers know what I really mean.

Perhaps as our industry matures more, a common vocabulary will truly
emerge.