Я хотел бы создать шаблон посетителя таким образом
public interface Visitable<T>{
public void accept(T visitor);
}
public interface SomeBusinessService implements Visitable<SomeVisitor>{
public void mtd1();
public void mtd2();
}
public abstract class SomeBusinessBean1 implements SomeBusinessService {
public void mtd1(){}
public void mtd2(){}
}
public abstract class SomeBusinessBean2 implements SomeBusinessService {
...
}
и т. Д.
тогда я бы хотел создать фабрику
public class SomeBusinessServiceFactory {
public SomeBusinessService createService
(Class<? extends SomeBusinessService> clazz ){
//do some stuff to create appropriate class derivation on the fly
// that will have accept() method implemented
}
}
и я мог бы вызвать его следующим образом
SomeBusinessService service =
SomeBusinessServiceFactory.createService(SomeBusinessBean1.class);
При таком подходе мне не пришлось бы создавать абстрактный класс comman для всех bean-компонентов, которые
реализовать метод accept () интерфейса Visitor.
Это решение может также использоваться в ситуациях, когда нам хотелось бы иметь общее поведение определенных методов в зависимости от фабрики сервисов для иерархии классов.
Есть ли способ сделать это с помощью стандартного jdk, или, может быть, мне нужно использовать внешние инструменты, такие как cglib, или, может быть, то, что я говорю, является мусором, и мы можем достичь этой цели другим способом.
Tx в продвинутом