Может ли кто-нибудь помочь мне разобраться в следующих запросах относительно шаблона фабричных методов?завод против шаблона метода фабрики в C#
im refering this link в качестве образца.
1.Что является необходимостью абстрактного класса Factory в заводской схеме метода? Что такое , если вы используете обычный класс?
2. Указывается, что изменение кода не повлияет на клиента. Но , если был добавлен новый класс product3, в код клиента также потребуется соответствующее изменение (в соответствии с приведенным ниже кодом). Тогда в чем преимущество этого шаблона дизайна?
3.Что является преимуществом objFactories[0] = new concreteFactoryforProduct1();
над concreteFactoryforProduct1 factory = new concreteFactoryforProduct1();
Factory[] objFactories = new Factory[2];
objFactories[0] = new concreteFactoryforProduct1();
objFactories[1] = new concreteFactoryforProduct2();
foreach (Factory objFactory in objFactories)
{
Product objProduct = objFactory.GetProduct();
objProduct.GetDetails();
}
4.Почими мы не можем реализовать открытый близко принцип простого шаблона дизайна?
1) но im создает экземпляры objFactories [0] = новый конкретныйFactoryforProduct1(); 2) им непонятно, что вы пытаетесь объяснить. 3) почему я должен использовать objFactories [0]? почему я не могу использовать экземпляр класса? в чем преимущество? –
(1) Да, это нормально, вы не вызываете новый конструктор Factory() ->. Только ссылочный тип. (2) На практике, если u хочет объект, созданный Factory1, вы просто создаете экземпляр (предпочтительно Singleton) и вызываете его метод. (3) Здесь, без этого, как вы можете вставлять обе типы конкретных заводов в один и тот же массив? –
Я понял вашу точку зрения. Но вы объясняете реализацию шаблона, и я прошу воспользоваться этим способом. Только в этом примере он использует массив. У вас может быть много примеров, которые прямо присваиваются фабричному абстрактному экземпляру. –