Я провожу некоторые исследования вариантов реализации шаблонов проектирования, я натолкнулся на некоторые примеры, реализованные здесь http://www.codeproject.com/Articles/37547/Exploring-Factory-Pattern и http://www.oodesign.com/factory-pattern.html.. Моя задача - использовать фабричный шаблон без отражения.В заявленных статьях говорится, что нам нужно регистрировать объекты, а не классы, что мне кажется нормальным и логичным, но, когда я вижу реализацию, я вижу дублирование объектов, например, в приведенном ниже коде
// Factory pattern method to create the product
public IRoomType CreateProduct(RoomTypes Roomtype)
{
IRoomType room = null;
if (registeredProducts.Contains(Roomtype))
{
room = (IRoomType)registeredProducts[Roomtype];
room.createProduct();
}
if (room == null) { return room; }
else { return null; }
}
// implementation of concrete product
class NonACRoom : IRoomType
{
public static void RegisterProduct()
{
RoomFactory.Instance().RegisterProduct(new NonACRoom(), RoomTypes.NonAcRoom);
}
public void getDetails()
{
Console.WriteLine("I am an NON AC Room");
}
public IRoomType createProduct()
{
return new NonACRoom();
}
}
, для которого используется метод RegisterProductСаморегистрация, мы должны вызывать его в любом случае перед созданием объекта фабрики, то есть перед тем, как в каком-либо месте в основном классе клиента или где-либо, где это применимо, чтобы обеспечить его вызов.ниже мы создаем новый продукт, а в методе выше мы снова создаем новый продукт, который кажется бессмысленным.любой комментарий тела