我遇到过这种设计,但我没有完全掌握在 Java 8 中混合面向对象编程和函数式编程。
我对混合两种语言范式很感兴趣,而且互联网上的大多数教程都很简单,所以我无法通过混合来找到有关大规模软件设计的示例。所以有了这个示例案例,我想我有机会挖掘它的某些案例。
在这种情况下,让我展示代码的相关部分。这段代码包含一个通用的 FetchUtils 类,它实现了一个自定义迭代器,但为了简洁起见,我删除了一些部分。
public class FetchUtils<R, MSGIN, MSGOUT> {
public SomeClass<R> getSomething(MSGIN query,
Function<MSGIN, MSGOUT> queryFunc,
Function<MSGOUT, List<R>> getResultList) {
//...
MSGOUT callResult = queryFunc.apply(query);
buffer = getResultList.apply(callResult);
//...
//return someThing;
}
//...
}
Run Code Online (Sandbox Code Playgroud)
在客户端中定义了一个函数和一个指向getCustomer
类方法引用的 lambda 表达式。从客户端到使用泛型类型的上述方法的实际调用正在发送这些功能。
public class CustomerResponse {
//...
public List<Customer> getCustomer() {
if (thing == null) {
thing = new ArrayList<Customer>();
}
return this.customers;
}
//...
}
public class MyClient {
//...
@Autowired
private FetchUtils<Customer, CustomerRequest, CustomerResponse> fetchUtils;
//... …
Run Code Online (Sandbox Code Playgroud) 我正在尝试实施一个解决方案来向 Google Analytics 报告详细的用户活动。由于该应用程序是单页应用程序,我知道我可以从 捕获页面更改事件router
,但这只是解决方案的基本部分,仅用于报告所见页面。
重点是因为这是一个包含 500 多个页面/组件的大型应用程序,我不想创建记录器服务需要通过添加它来更改每个页面,我需要找出一种方法来确定集中式或应用程序范围捕捉和检测按钮点击事件的地方,也可能是触发它们的页面。然后我希望能够将相关页面上的详细用户活动报告给分析,例如从 Y 页面单击 X 按钮。
对于一个中心位置,我知道有interceptors
HTTP 事件和router
页面更改。除此之外,我知道也许我可以使用带有钩子的更改检测,但我不确定我是否必须将钩子连接到应用程序生命周期级别。
如何在 Angular 中实现一种机制来捕获和检测具有相关页面的组件元素事件?我可以利用框架提供的任何最佳实践或抽象吗?
注意:我已经了解到它Google Tag Manager
专门用于分析目的,但我的问题仍然是如何使用 Angular 实现它。
javascript design-patterns google-analytics event-handling angular