当前位置: 首页 > 面试题库 >

Spring如何有效地实施战略模式?

刘京
2023-03-14
问题内容

我有一个使用Spring框架以Java
1.5开发的Web应用程序。应用程序包含“仪表盘”,这些仪表盘是简单的页面,在其中可以重新组合一堆信息,并且用户可以在其中修改某些状态。经理们希望我在数据库中为这三个仪表板添加一个日志记录系统。每个仪表板都有不同的信息,但是应该通过日期和用户登录来跟踪日志。

我想做的是实现这样的Strategy模式:

interface DashboardLog {
   void createLog(String login, Date now);
}

// Implementation for one dashboard
class PrintDashboardLog implements DashboardLog {
  Integer docId;
  String status;

  void createLog(String login, Date now){
    // Some code
  }
}

class DashboardsManager {
  DashboardLog logger;
  String login;
  Date now;

  void createLog(){
     logger.log(login,now);
  }
}

class UpdateDocAction{
   DashboardsManager dbManager;

   void updateSomeField(){
      // Some action
      // Now it's time to log
      dbManagers.setLogger = new PrintDashboardLog(docId, status);
      dbManagers.createLog();
   } 
}

Appcontext.xml:

<bean id="dashboardManagers" class="...DashboardManagers" />

因此,在此解决方案中,我不使用依赖项注入。以这种方式进行操作是否“正确”(良好实践,性能……)?有没有更好的方法可以使用DI?

注意:我没有写一些基本的东西,例如构造函数和getter / setter。


问题答案:

尽管按照原样使用策略html" target="_blank">模式是完全“正确”的,但是考虑到您正在使用Spring的事实- 最好
使用Spring框架提供的依赖注入机制-
最好使用您的框架必须提供其核心优势之一。



 类似资料:
  • 我正在研究一个推荐系统。这将是一个Android应用程序,用户将输入他们的偏好,并在这些偏好的基础上,其他匹配的配置文件将显示给该用户。我正在从用户那里获取数据,并将其存储在Firebase中。 这些是数值,为了向用户显示匹配的配置文件,我使用两种算法来计算用户之间的相似性计数:和 由于这将是一个实时应用程序,所以这种方法是完全错误的,我想实现策略设计模式,其中算法可以在运行时决定,而不是在编译时

  • 问题内容: 在* NIX中实现tail的有效方法是什么?我提出(编写)了两个简单的解决方案,都使用一种圆形缓冲区将线加载到圆形结构中(数组|双向链接的圆形列表- 很有趣)。我已经看到了busybox中较旧的实现的一部分,并且据我了解,他们使用fseek查找EOF,然后“向后”阅读内容。有没有更干净,更快的东西?我在面试时被问到了,问问者看起来并不满意。先感谢您。 问题答案: 我认为没有其他解决方案

  • 问题内容: 假设我使用Spring,我有以下策略… 接口 首要策略 下一个策略… 上下文… 现在说这个上下文是通过mvc控制器访问的,例如… 上下文应该是一个组成部分吗?当我这样做时,出现一条错误消息说loadOnStartup,正如您所期望的,该策略可能是一个nonUniqueBean。是否所有的bean都需要像上面一样的组件,或者我的注释不正确? 我最大的疑问确实是您可以在Spring MVC

  • 为每个任务实例化具体策略,并在不是时实现“虚拟”策略(如下所示)。代码中到处都有奇怪的可为空的和变量,在本例中... 在不计划任务的情况下具有IPlanningStrategy变量,并且只有当任务“提升”为时才使用具体策略实例化。 备选方案(1)应该是这样的: 现在我看到了不同的**非常重要的**问题。除了algorithm(当然实现该算法的所有任务都共享)之外,我的每个具体策略类还包含附加参数,

  • 在策略模式中,可以在运行时更改类行为或其算法。 这种类型的设计模式属于行为模式。 在策略模式中,我们创建表示各种策略的对象和根据其策略对象行为不同的上下文对象。 策略对象更改上下文对象的执行算法。 实现 (Implementation) 我们将创建一个Strategy接口,用于定义实现Strategy接口的操作和具体策略类。 Context是一个使用策略的类。 StrategyPatternDem

  • 问题内容: 我一直在阅读有关OCP主体以及如何使用策略模式来实现此目的的信息。 我打算尝试向几个人解释这一点,但是我能想到的唯一示例是根据“订单”的状态使用不同的验证类。 我已经在线阅读了几篇文章,但这些文章通常不会描述使用该策略的真实原因,例如生成报告/账单/验证等。 您是否认为现实世界中有常见的战略模式示例? 问题答案: 你必须加密文件。 对于小文件,可以使用“内存中”策略,其中读取完整的文件