Ну, так как мы не можем увидеть ваш код, я предложу следующее решение, основанное на моем личном предположении о том, как работает ваш код.
Пожалуйста, имейте в виду, что этот метод не так масштабируем и довольно неэффективен, если у вас есть 100 различных способов создания сеток.
Однако, если у вас есть (например, 3) типа таких способов, например, вы можете использовать константы!
См. Ниже:
public class WebCenterGrid {
//Declare constants with meaningful names for grid creation (add more as you like)
public static final int DEEP_COPY=1, SEARCH=2, REBUILD=3;
public void makeDeepCopy(){
//implementation goes here..
}
public void searchAndPopulate(){
//implementation goes here..
}
public void rebuildGrid(){
//implementation goes here..
}
public void refresh(int operation) {
switch(operation) {
//based on 'operation', call appropriate method!
case DEEP_COPY: this.makeDeepCopy(); break;
case SEARCH: this.searchAndPopulate(); break;
case REBUILD: this.rebuildGrid(); break;
//you can have a default operation for any parameter that is not
//in the list of our defined constants(i.e. the number 143)
default: simpleRefresh(); break;
}
}
}
Итак, что делает вышеприведенное работа решения?
blockquote>Обычно, когда вы вызываете
refresh(int operation)
из одного из ваших других классов, вам нужно передать int в качестве параметра. Это целое число является одной из констант, определенных в самом верху класса. В зависимости от того, какая константа была передана, регистр переключателя будет определять, какой метод вызывать.ПРИМЕР (Допустим, AwesomeGridCreator - это класс, который при вызове refresh () для обновления сетки должен выполнить поиск и затем заполнить сетку (, как вы) упомяните в своем вопросе ).
Назовем целое число (для простоты)
SEARCH_POPULATE
и присваиваем ему ЛЮБОЕ значение , которое мы хотим. Например286
[ 119].Затем мы можем использовать эту константу из любого другого класса, потому что нам не важно, каково ее значение (в данном случае
286
, но какая функциональность она предоставляет при вызовеrefresh()
. [ 1118]public class WebCenterGrid { /*some code here*/ public static final int SEARCH_POPULATE = 286; //integer value doesn't matter public void refresh(int operation) { switch(operation) { case SEARCH_POPULATE: this.searchAndPopulate(); break; } /*...some other code here, we don't care..*/ }
Затем, в классе «призвания»:
public class AwesomeGridCreator{ //some code here WebCenterGrid wcg = new WebCenterGrid(); //The parameter that we pass below (2), will make the refresh() method call //the method that we defined in our switch cases ('searchAndPopulate()'). wcg.refresh(wcg.SEARCH_POPULATE); }
Если Вы хотите видеть сложность Plone, необходимо попросить его. Для большинства людей это просто не там. Это устанавливает за несколько минут через установщик с одним щелчком. Затем это - один щелчок для входа в систему, один щелчок, чтобы создать страницу, использовать редактора WYSYWIG и один щелчок для сохранения. Все через интуитивный веб-GUI. Plone является продуктом.
Если Вы хотите использовать его в качестве "платформы", то платформа является стопкой более чем одного миллиона строк кода, которая реализует полный комплект управления контентом. Никто не знает все это. Однако все те "акронимы" и "файлы" являются доказательством программного обеспечения, которое включено в компоненты так, чтобы никакая потребность не знала все это. Можно стать настолько глубокими или мелкими в нем, как Вам нужно. Если существует что-то, в чем Вы нуждаетесь для некоторого аспекта управления контентом, это уже там, Вы не должны создавать его с нуля, и можно сделать это способом, это согласовывается с широкой практикой и обзором.
Я вижу четыре вещи, которые могут выровнять по ширине инвестиции времени в использовании Plone:
О, ожидайте, мне сказали, что plone встречи разработчиков являются одним из лучших! Как этот
Трудно ответить на Ваш вопрос без любой справочной информации. Сложность выравнивается по ширине, если Вы просто хотите блог? Нет. Сложность выравнивается по ширине при создании интранет компании для 400 + люди? Да. Действительно ли это - хорошие инвестиции, если Вы надеетесь быть консультантом? Абсолютно! Существует большая работа Plone там, и она платит намного лучше, чем среднее задание PHP.
Я поощрил бы Вас разъяснять то, что Вы пытаетесь создать, и попросить у форумов Plone совета. Plone имеет очень сформировавшееся и дружелюбное сообщество — и абсолютно сообщит, является ли то, что Вы пытаетесь сделать, бедными, подходящими для Plone. Можно, конечно, сделать то, что Вы хотите с Plone, но существуют некоторые области, где это - доступное лучшее решение, другие области, где это будет большая работа для изменения его, чтобы сделать что-то еще.
Некоторый фон:
Причина сложности Plone в данный момент состоит в том, что это перемещается в более современную архитектуру. Это соединяет мостом и старое и новый подход прямо сейчас, который добавляет некоторую сложность, пока переход не главным образом завершен.
Plone делает это, чтобы не оставлять их клиентов путем повреждения назад совместимости, к которой они относятся очень серьезно — в отличие от других систем, которые я мог упомянуть (но не будет ;).
Вы заботитесь о своих данных, заботах сообщества Plone об их данных — и мы хотели бы, чтобы Вы смогли обновить до новых и лучших версий, даже когда мы переходим к новой архитектуре. Это - одни из преимуществ сообщества Plone, но существует, конечно, штраф для оплаты за изменение плоскости, в то время как это летит, и это - немного временной, дополнительной сложности.
Кроме того, Plone как сообщество имеет сильное внимание на безопасность (сравните его с любой другой системой на уязвимостях, о которых сообщают), и очень профессиональная культура, которая оценивает хорошую архитектуру, тестирование и возможность многократного использования.
Как пример, считайте текущую версию Plone разработанной (что станет 4.0):
— Alexander Limi, соучредитель Plone (и немного смещенный ;)
Я нашел анонимный комментарий здесь, который намного лучше, чем то сообщение само, таким образом, я повторно отправляю его здесь полностью с несколькими исправленными опечатками.
Этим летом мой шахматный клуб попросил, чтобы я сделал новый веб-сайт, где члены платы должны смочь добавить экстренные сообщения, статьи... Походивший CMS. Будучи разработчиком Python, я посмотрел на Plone и купил Профессиональную разработку книги Aspeli Plone (превосходный записанный btw).
Я занял 3 недели своего отпуска исследование, которое книга и устанавливать первое копирует сайта.
После 3 недель я понял, что Plone имеет некоторые очень хорошие вещи, но также и некоторые очень расстраивающие вещи На positivie стороне
На оборотной стороне
Я предполагаю, что Plone является настолько медленным из-за точек 4, 5, 6 и 7.
Точки 6 и 7 сделали меня отбрасыванием Plone. Я навел справки о других опциях и в конечном счете решил разработать свой собственный CMS на Опорах, который ослепительно быстр по сравнению с Plone. На том же сервере разработки у меня есть время запуска 1 секунды, и время страницы перезагрузки не измеримо.
Сайт www.kosk.be работает (это находится на нидерландском языке). CMS позади него, названный Красным дьяволом, будет запущен как отдельный проект с открытым исходным кодом, начинающийся в следующем году
С точки зрения системного администратора Plone просто стесняется быть абсолютным дьяволом. Обновление, поддерживая и устанавливая, где Вы хотите установить вещи, является все более болезненным, чем необходимый на платформе Linux. Это - просто мои два цента, хотя, и почему я обычно предпочитаю избегать стека Zope/Plone.
Примечание: это лучше с более новыми выпусками, но более старыми выпусками.... тьфу