абстрактная фабрика
допустим у тебя есть завод (весь паттерн)
ты хочешь выпускать газированные напитки
что бы сделать напиток тебе надо
напиток (AbstractProductA)
бутылку (AbstractProductB)
тебе надо конвеер который приготовит напиток и сделает бутылку (AbstractFactory)
и тебе надо того кто нальёт напиток в бутылку (Client)
допустим с тобой решили заключить контракт CocaCola и хочет что на твоём заводе делали фанту (ConcreteFactory1) и спрайт (ConcreteFactory2)
соответственно бутылка для фанты - ProductB1,для спрайта ProductB2
напиток фанта ProductA1,спрайта ProductA2
вот у тебя есть завод который делает бутылку и напиток и наливает напиток в бутылку.
Допустим в первой половине дня клиентам нужна фанта, соответственно делаем фанту
Client client = new Client();
client.SetFactory(new ConcreteFactory1());
client.MakeBeverage();
но вот наступила вторая половина дня и надо делать спрайт
client.SetFactory(new ConcreteFactory2());
client.MakeBeverage();
т. е. можно очень легко и просто переключатся между создаваемыми продуктами.
ну это очень абстрактно про абстрактную фабрику, на самом деле ей удобно делать гую, а точнее так называемые скины или "шкурки".
для метода ничего на ум не приходит, извини)