An extension to the AbstractFactoryPattern is the PluggableFactory proposed by JohnVlissides. See:
Briefly, there is a single factory class, instances of which contain prototype instances of the things to be created; these instances are then cloned to satisfy creation requests. Thus, the PluggableFactory pattern hides the PrototypePattern, using the factory as a facade (FacadePattern).
For example (in JavaLanguage):
abstract class Button { abstract public Object clone(); } class WindowsButton extends Button { // implementation of a Windows button } class MotifButton extends Button { // implementation of a Motif button } class ButtonFactory { private Button btn ; public Button create() { return (Button)btn.clone() ; } }The normal AbstractFactory approach would make ButtonFactory abstract, and then add WindowsButtonFactory and MotifButtonFactory subclasses; it also wouldn't need Button to be Cloneable.
The advantage of a PluggableFactory is that it eliminates the proliferation of factory subclasses. The disadvantage is that the products must be cloneable, or otherwise duplicatable in some way.
A nominally related, but distinct, pattern for using AbstractFactory as the export component in PluginArchitecture is described in the page on AbstractFactory.