2

是否有一种解决方法可以在不涉及方面和切点等的情况下实现横切关注点?

我们在 Spring MVC 中,并且正在开发一个业务应用程序,由于各种原因,进入 AspectJ 或 Spring 的方面处理是不可行的。

我们的一些控制器已经变得非常臃肿(太重了),到处都是大量的失焦代码。

每次我坐下来重构时,我都会看到同样的事情一遍又一遍地做。请允许我解释一下:

每次我必须准备一个视图时,我都会为 UI 添加一个国家列表。(对象添加到 ModelAndView)。该列表从数据库中提取到 ehCache 中。

现在,最初当我试图将列表 INLINE 添加到 mav 的任何地方时,这很糟糕。相反,我准备了一个函数来处理每个 ModelAndView。如何?好吧,对函数有更多的垃圾调用!

我买了一个麻烦为另一个。

什么是可以帮助我的设计模式/技巧?我厌倦了调用函数来向我的 ModelAndView 添加东西,并且只有超过 3500 行的控制器代码,我要疯狂地找到所有东西丢失的粘合点!

欢迎提出建议。横切关注没有 AspectJ 或 Spring 原生的风味。

4

1 回答 1

1

由于您使用的是 Java,您可能会考虑将您的代码迁移到 Scala,因为它与 Java 交互良好,那么您可以使用特征来获得您想要的功能。

不幸的是,横切是 OOP 的一个问题,所以改用函数式编程可能是一个解决方案,但是,我希望实际上他们正在使用 AOP 来实现这些 mixin,所以它仍然是 AOP,只是被抽象出来了。

另一种选择是重新设计您的应用程序,并确保您没有重复的代码,但主要的重构非常困难并且充满风险。

但是,例如,您最终可能会调用 ModelAndView 调用几个静态实用程序类来获取它需要的数据,或者确保用户具有正确的角色,例如。

您可能想看一本书,Refactoring to Patterns ( http://www.industriallogic.com/xp/refactoring/ ) 以获得一些想法。

于 2009-12-05T15:31:22.480 回答