Проблема конфигурирования конкретных классов
От: Аноним  
Дата: 10.04.11 08:25
Оценка:
Доброго времени суток.
Пишу приложение для обработки изображений.
Есть фильтры которые пользователь может применять к изображению. Наборы таких фильтров являются профилями. Пользователь может добавлять, удалять, редактировать профили, сохранять их под заданными именами.
Каждый фильтр реализует интерфейс из одного метода.
public interface Filter
{
  BufferedImage filter(BufferedImage src, BufferedImage dest);
}

Соответственно в профилях хранятся коллекции из элементов Filter. У конкретных классов фильтров настройки могут быть абсолютно разные. На этапе добавления нового фильтра все идет гладко, пользователь выбирает из списка нужный ему фильтр, выполняет все настройки (конкретного класса, реализующего интерфейс Filter) и фильтр добавляется в профиль, а его интерфейс срезается до Filter. А вот как быть с обратным процессом? Редактируем профиль и входящие в него фильтры, но у нас то они хранятся как интерфейсы, т.е. какие должны быть настройки мы не знаем.
Пока в голову приходят только разные вариации подобного кода.
if (filter instanceof SomeFilter)
{
  showConfigDialogForSomeFilter();
}
else if (filter instanceof SomeOtherFilter)
{
  showConfigDialogForSomeOtherFilter();
}

Но такое решение не кажется мне хорошим. Как бы Вы решили данную проблему?
P.S. Язык Java.
java
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.