Я читал книгу моделей GoF, и мне интересно, будут ли использовать генерики для достижения тех же результатов, что и использование обычной реализации клонирования прототипа. Возможно, я неправильно понимаю шаблон прототипа, поэтому дайте мне знать, если что-то происходит, это не образец прототипа.Шаблон прототипа с дженериками вместо клонируемого
Насколько я понимаю, прототип шаблона в основном вместо создания разных фабрик для разных подклассов u передает подкласс на фабрику в конструкторе, чтобы он создавал подклассы из этого чертежа.
В приведенном ниже примере Я установил тип объектов, которые эта фабрика должна возвращать как общий и создать экземпляр при вызове товара.
Пример:
public class PrototypedFactory {
Prototype prototype;
public PrototypedFactory(Prototype prototype) {
this.prototype = prototype;
}
public Prototype makeItem() throws CloneNotSupportedException {
return (Prototype) prototype.clone();
}
public static void main(String[] args) throws Exception {
GenericFactory<ConcretePrototype> factoryGeneric = new GenericFactory<ConcretePrototype>(
ConcretePrototype.class);
PrototypedFactory factory = new PrototypedFactory(new ConcretePrototype());
Prototype item = factory.makeItem();
Prototype item2 = factoryGeneric.makeItem();
System.out.println(item.getName());
System.out.println(item2.getName());
}
}
GenericFactory:
public class GenericFactory<T extends Prototype> {
Class<T> c;
public GenericFactory(Class<T> clazz) {
c = clazz;
}
public Prototype makeItem() throws Exception {
return c.newInstance();
}
}
Прототип
public abstract class Prototype implements Cloneable {
String name = "prototype";
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
public String getName() {
return name;
}
}