当前位置: 首页 > 网络应用技术

AOP实现AOP的几个想法

时间:2023-03-08 00:42:28 网络应用技术

  原始地址

  假设有商店,从数据库中获取数据,有一个方法iuserstore.getByID,传递ID参数,然后返回用户信息:

  此外,还有一项服务,该服务只有一个用户ID,需要获取用户信息,因此它取决于上述iuserstore:

  上述最简单的情况是,如果我们想在userimpl.checkuser中调用smang.userstore.getbyid方法,它仍然非常简单。

  但是,如果有许多与inmand.userstore类似的方法。方法中的getByid,当逻辑非常复杂时,这样的添加必须非常麻烦且非常疲倦。

  目前,如果有一个层间代理可以帮助我们拦截商店的方法调用,并在呼叫之前和之后添加时间累积的统计信息,它将不可避免地提高我们的工作效率。

  例如:

  这只是一个简单的包装功能。我们如何将其连接到上述接口?

  可以看出,主要方法是提供商参数是一个相似的函数,模拟是IXXX接口的实现,而最终周围的是该方法的接口。

  可以看出,模拟结构就是这样:

  因此,为了提高开发效率,我还编写了一个工具来根据接口生成相应的模拟结构。

  在上述实施中,依赖对袋子的方法:

  并且该方法的性能与直接方法调用不同。因此,可以通过代码生成它来替换它吗?

  再次回顾它,我们使用一个新对象,此对象具有我们需要使用的方法:

  如果我们更改为:

  这样,您可以在调用此方法之前和之后添加逻辑吗?

  如果界面有许多方法,并且添加的逻辑是相同的,那么我们需要考虑使用代码生成来提高开发效率:

  最后,可以添加一般逻辑并可以添加自定义逻辑的一种。

  路口

  在上面的代码中,该函数调用函数,因此现在我想在此调用之前和之后添加时间耗尽的统计信息。我应该怎么办?

  如果我可以生成一个包含逻辑的函数,例如时间耗尽统计信息,然后将正确的呼叫更改为正确的呼叫,是否非常方便?

  路口

  路口

  有关代码实施的详细信息

  原始:https://juejin.cn/post/709962123645505957