РЕДАКТИРОВАТЬ: Вы увидите в моих комментариях, что я, возможно, бросился отвечать на этот вопрос, и запутался в процессе. Я продолжу и отредактирую это, чтобы работать с Абстрактной Фабрикой, как я думаю, что изначально предполагал, но, пожалуйста, обратите внимание, что это в основном для справки, а не обязательно как ответ на оригинальный вопрос.
Самый распространенный пример, который я видел, описывает, как создаются компоненты GUI.
Например, если вы разрабатывали форму для своего приложения, чьи компоненты графического интерфейса могли принимать несколько представлений (возможно, в зависимости от платформы, на которой вы работали), вы разработали бы абстрактную фабрику для обработки этих компонентов.
Чтобы добавить новые элементы управления в форму, код может выглядеть примерно так:
public MyForm ()
{
GuiFactory factory = new Win32Factory ();
Button btn = factory.CreateButton ();
btn.Text = "Go!"
btn.Location = new Point (15, 50);
this.Controls.Add (btn);
}
Это удовлетворяет шаблону Абстрактной фабрики, потому что вы можете создавать разные экземпляры фабричного объекта для создания разных представлений созданных вами объектов без изменения клиентского кода (это простой пример, но я думаю, что обычно вы не создадите Win32Factory используя new, он будет получен через какую-то другую абстракцию).