Страница: 1 |
Страница: 1 |
Вопрос: Плагины в виде классов?
Добавлено: 30.03.11 22:24
Автор вопроса: Morpheus | Web-сайт:
Такой вопрос - как лучше делать некое подобие плагинов в объектно-ориентированных языках, работающих под управлением виртуальной машины, например?
Нужно чтобы в определённую папку можно было загрузить определённый набор плагинов в каком-либо формате и чтоб они могли в каком-то наиболее простом виде применяться.
Я подумывал сделать так - создать класс в виде
abstract class AbstractPlugin
{
public abstract byte[] applyPlugin(byte[] input) throws Exception;
}
... и чтоб прога могла читать файлы с классами, инстанциировать их, и вызывать этот вот метод... но как это сделать на Java/C# ? через сериализацию готовых объектов?
Может есть лучший способ? Не хотелось бы иметь дело с поинтерами, точками входа и прочей с++ницей, но если есть элегантые решения, можно и глянуть..
Заранее благодарен!
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
СанСаныч
Вопросов: 3
Ответов: 118
Профиль | | #1
Добавлено: 31.03.11 00:35
Мне больше нравятся интерфейсы. Но это дело вкуса.
Про интерфейсы посмотри тут:
http://aleksey.nemiro.ru/my/articles/framework-net/Plug-ins.html
Также присмотрись к тому что уже встроено в дотнет:
http://msdn.microsoft.com/ru-ru/library/gg145020.aspx
Ну или если любитель садо-мазо то прошу к мефу в гости:
http://mef.codeplex.com/
Номер ответа: 2
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #2
Добавлено: 31.03.11 04:11
Никаких поинтеров и т.п.
Не знаю как в Java, а в .NET делается очень просто.
В домен загружаешь сборку, с помощью Reflection анализируешь типы, которые в ней присутствуют (можешь, например, отобрать те типы, которые реализуют определенные интерфейсы).
После этого через Reflection создаешь экземпляры нужных объектов, можешь привести их к интерфейсам, с которыми будешь работать.
Можно использовать и абстрактный класс, но в этом случае я бы использовал именно интерфейсы.
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 31.03.11 04:16
http://vbnet.ru/articles/showarticle.aspx?id=152
Номер ответа: 4
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #4
Добавлено: 03.04.11 04:23
Ок, походу я виден нечто похожее для Java как Артём показал, на днях попробую.. Уже благодарен!