Нужно написать гуишное приложение с возможностью подключать модули (то есть плагины). Причём программа не должна перезапускаться при их подключение (должно всё применяться сразу же).
// Где-то там, где реализуется плагин
class MyClass implements MyPluginInterface {}
// У нас тут, в модульной софтинке
try {
Class c = Class.forName("com.vasyapupkin.MyClass");
} catch (ClassNotFoundException e) {
// log error
}MyPluginInterface plugin = (MyPluginInterface) с.newInstance();При подключении плагина будет изменяться главная форма программы, то есть будут появляться какие-то кнопки, поля и прочее.
правилен ли подход использования только одного сервлета, который принимает запрос, отдает его на обработку соответствующим модулям и затем отсылает ответ?
DispatcherServlet из Spring MVC:
инкапсуляция доходит до абсурда, и придется писать геттеры под каждый элемент или методы вроде addToCartButtonClick().
addToCartButtonClick должен быть метод addProductToChart, где PageObject уже решит, что ему нужно: кнопку нажать, ползунок потянуть и т.п., тогда это можно будет назвать инкапсуляцией и пропадёт абсурдность.virtual (иначе будет вызываться метод из типа переменной-ссылки, не полиморфно), в Java же в угоду читаемости кода используется позднее связывание по умолчанию: все методы неявно "virtual", так что качество связывания отдается на откуп компилятору.final, что запретит переопределять метод в наследниках, т.е. у компилятора появятся все полномочия жестко вбить необходимый адрес метода в точку вызова без страха, ибо альтернативных версий метода в наследниках просто быть не может.final, а в C# - sealed) TooLongNameException и NegativePriceException где-то выше станут ModelValidationException, т.е. там вам достаточно знать, что модель кривая, вне зависимости от того, по какой причине это произошло.interruptionRequested, например), которую треду необходимо проверять самостоятельно между атомарными операциями своей полезной нагрузки. ("Скопировал файл, проверил - false, скопировал следующий, проверил - false, скопировал еще один, проверил - true, завершился").1) if ( *originalName ) при каких условиях оно срабатывает\не срабатывает.0, не срабатывает - в противном случае.2) while ( v6 ) как оно считает что пора бы и закончить?0.3) v6 = (originalName++)[1] я так понимаю что тут берется первый элемент из originalName?originalName (до инкремента).4) unsigned __int16 есть ли аналог этому типу в jav'е?long вместит все его значения. sleep.if(value.equals("OK")) { ... }
switch(value) {
case "OK": ... break;
case "Error": ... break;
}boolean или enum-типы (если больше двух значений).enum Status {
Ok,
Error,
Warning
}
class Foo {
static void bar(Status status) {
if (status == Status.Ok) {
...
}
...
}
}