У нас есть продукт со стандартной функциональностью, и наши клиенты также настраивают продукт на свои требования. Но в настоящее время они вносят изменения в код основного продукта. Я хочу знать подходы, которые можно использовать для создания расширяемого или настраиваемого приложения j2EE. Для разработки этого, читайте ниже: для примера: рассмотрим ниже класса:Предоставление точек расширения в веб-приложении
Class A{
public void doSomething(Object o){
// standard product functionality goes here.
// due to client customizations. client code also goes here.
}
}
В классе выше, клиент добавил код в код основного продукта. В идеале код продукта не должен изменяться в соответствии с принципом открытого закрывания.
В настоящее время мы не разрешаем клиенту добавлять код в метод, но предоставляем точки настройки, как показано ниже.
Class A{
public ClassAExtension ext;
public void doSomething(Object o){
// standard product functionality goes here.
// client code goes in doClientCustomizations();
ext.doClientCustomizations(Object o);
}
}
Таким образом, теперь клиент использует класс ClassAExtension для переопределения поведения. Однако этот подход все еще не настолько изящный и делает код продукта более загроможденными такими точками настройки.
Какие различные подходы или рамки доступны для таких вещей более элегантным и эффективным способом?
Это то, что мы делаем в настоящее время, но оно неэффективно, поскольку мы должны обеспечить крючки во многих местах в методе. – NaiveCoder