java - 当两个不同的 wicket 应用程序共享通用功能时,如何重用代码

标签 java wicket code-reuse

我有一个 Wicket AuthenticatedWebApplication,它有几个页面和功能需要在我必须开发的新 AuthenticatedWebApplication 中重复使用。

我正在使用 Wicket 1.4、Spring 和 Hibernate。

两个应用程序甚至将共享相同的外观(应用程序 Logo 除外),现在在基页中实现。

有没有人有过类似的经历?我绝对不想重复复制粘贴代码,因为通用功能实现了一个可以而且将会改变的工作流程。

我可以做些什么来保持我的应用程序模块化并实现我的目标?

最佳答案

我的公司一直这样做。我们有一个核心包,其中包含基本的 UserApplication、用户帐户、登录、身份验证等。然后,我们开发的每个项目都扩展了这个基本包。有一些重复 - 例如几乎所有配置文件在每个文件中看起来都相同 - 但每个文件都有自己的 theme提供标记的目录,根据应用程序的外观和感觉进行定制。

执行此操作时的一些建议:

  1. 核心应用程序应该有相当数量的 getXPanel()每个子应用程序覆盖的方法。例如,getHeaderPanel()
  2. 使用每个人都扩展的“BasePage”类。这是您设置整体外观的地方,在子应用程序主题文件夹中被覆盖,并大量使用 <wicket:extend>特征。也是放置 jQuery 导入的好地方,ec。
  3. 请记住,标记很容易被覆盖。您的子应用程序不需要创建页面的 java 扩展来更改 Logo 。只需使用不同的标记。

我们的每个应用程序都至少分为 4 个模块。例如:

  1. base - Wicket 依赖,基本事件记录
  2. 数据 - UserApplication、AdminPage、用户 hibernate 对象。每个页面都有自己的标记,但通常会被覆盖。
  3. science - 一个包含大量代码的核心项目,用于显示科学教科书。 ScienceApplication extends UserAppication .
  4. 基础 - 针对小学生的特定主题实现 FoundationsApplication extends ScienceApplication
  5. 查询 - 针对高中生的不同主题具体实现 InquiryApplication extends ScienceApplication

我们的两个科学应用程序有不同的标题,甚至有几个不同的页面,但是 ScienceApplication有我上面描述的那些方法。

关于java - 当两个不同的 wicket 应用程序共享通用功能时,如何重用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6599892/

相关文章:

java - 同一应用程序中的 Google App Engine 推送队列 HTTP 调用是否收费

java - 编译错误 : cannot convert Set<Set<T>> to Set<Map. Entry<T, Set<T>>>

java - tess4j 设置仅识别数字和字母

html - 使用 Wicket 在 <head> 中包含 Bootstrap CSS

c++ - Java "implements"等同于 C++?

java - 单例实现示例

wicket - 我可以在不刷新 RepeatingView 的情况下将元素添加到 RepeatingView 吗?

python - Django-CMS复用插件实例

java - 通过最大化代码重用来为 Android 和 J2ME 编写应用程序的正确设计方法是什么?

java - 使用 JMS 监听器自动刷新 Wicket 组件