удалить
<img action="remove">
Использовать. Дополительно запросить текст
<img action="use" use-input="text">
Использовать. Дополительно запросить логин
<img action="use" use-input="user">
Дальше юзаем шаблон Команда.
Кучка классов с общим методом execute() и статичный метод прародителя, который инстанцирует нужный класс и запускает тот самый execute().
дерево классов-исполнителей сечас такое:
taAction
| - taRemove
| - taUse
| - tauText
| - tauUser
Проблема состоит в едином методе инстанцирования, который разбирает и "что делать" и "что дополнительно запрашивать".
Хотелось бы разделить логику, чтобы в случае action="use" именно класс taUse решал, какой объект создавать.
Мысль была сделать это в taUse.execute(). Пусть он вместо выполнения конкретной работы создает ещё один класс и вызывает его execute().
Коряво это, как по мне.
Вот текущий вариант:
taAction.action = function(el){
try{
var tmp = $(el).data('action');
if('Use' == tmp){ // уточнение класса
tmp = ('u-' + $(el).data('use-input')).replace(/\-([\w])/g, function(str, p1, offset, s){
return p1.toUpperCase();
});
}
tmp = new window['ta' + tmp](el);
if(tmp){
tmp.start();
}else{
throw new Error('Произошла ошибка.');
}
}catch(e){
alert('Error! '+e.message);
}
}