Использование шаблона фабрики для классов с разными параметрами

У меня есть очень простая фабрика, которая принимает Enum в качестве одного из параметров для определения типа объекта, который должен быть создан, и другого параметра, общего для всех создаваемых объектов.

Как я Я добавляю больше типов для фабрики, чтобы создать мои параметры конструктора объекта, которые начинают отличаться, например:

public class someFactory {
    public someFactory() {
    }

    public SomeObject newObject(Type type, Object data) {
        return this.newObject(type, data, "");
    }

    public SomeObject newObject(Type type, Object data, Object stringOrObject) {
        SomeObject someObject = null;

        if (type != null) {
             switch(type) {
                 case CREATE:
                     someObject = new CreateObject(data);
                     break;
                 case DELETE:
                     someObject = new DeleteObject(data, (String)stringOrObject);
                     break;
                 case EDIT:
                     someObject = new EditObject(data, (Object)stringOrObject);
                     break;
                 default:
                     break;
             }
        }

        return someObject;
    }
}

Должен ли я не использовать фабрику и просто создавать экземпляры различных типов с правильными аргументами, или можно как-то улучшить описанное выше, чтобы сделать его более гибким?

10
задан Don Roby 6 December 2010 в 22:46
поделиться