问题标签 [cake-pattern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2237 浏览

akka - Akka 和蛋糕图案

我很困惑如何使用蛋糕模式确保我的演员具有适当的依赖关系。我仍然在处理这个问题,我在任何地方都找不到任何例子。我基本上只是在寻找要遵循的教程/资源。

干杯,克里斯。

0 投票
2 回答
653 浏览

scala - 避免与蛋糕模式的名称冲突

我目前正在使用蛋糕模式来实现一些优化算法。我经常遇到名称冲突问题。例如:

在这里,在和特征constant中都有定义,但它们的值可能不同。我可以在名称前加上特征名称,但我发现它又丑又脆()。有没有更好的方法呢?AddMuldef mulConstant: T

0 投票
2 回答
910 浏览

scala - 具有不同生命周期的对象的 Scala 蛋糕模式

我尝试在我的项目中使用蛋糕图案并且非常喜欢它,但是有一个问题困扰着我。

当所有组件都具有相同的生命周期时,蛋糕模式很容易使用。您只需定义多个特征组件,通过特征实现扩展它们,然后将这些实现组合到一个对象中,并通过自类型自动解决所有依赖关系。

但是假设您有一个可以作为用户操作的结果创建的组件(具有自己的依赖项)。该组件无法在应用程序启动时创建,因为它还没有数据,但它应该在创建时具有自动依赖解析。这种组件关系的一个示例是主 GUI 窗口及其复杂的子项(例如,笔记本窗格中的选项卡),它们是根据用户请求创建的。主窗口是在应用程序启动时创建的,其中的一些子窗格是在用户执行某些操作时创建的。

这在 Guice 等 DI 框架中很容易完成:如果我想要某个类的多个实例,我只需注入一个Provider<MyClass>; 然后我在该提供者上调用get()方法,并且所有依赖项都会MyClass自动解决。如果MyClass需要一些动态计算的数据,我可以使用辅助注入扩展,但生成的代码仍然归结为提供者/工厂。相关概念、范围也有帮助。

但我想不出使用蛋糕图案的好方法。目前我正在使用这样的东西:

然后我混合DefaultSubpaneProvider我的顶级蛋糕并注入SubpaneProvider所有需要创建子窗格的组件。

这种方法的问题是我必须手动将依赖项(modelin ModelContainerComponent)从顶级蛋糕向下传递到动态创建的蛋糕。这只是一个简单的例子,但可以有更多的依赖关系,也可以有更多类型的动态创建的蛋糕。它们都需要手动传递依赖项;此外,某些组件接口的简单更改可能会导致多个提供商进行大量修复。

有没有更简单/更清洁的方法来做到这一点?这个问题在蛋糕图案中是如何解决的?

0 投票
1 回答
440 浏览

scala - Junits 使用 Mocks scala 特征和蛋糕模式

我有一个 scala 特征如下 -

现在我听说过蛋糕图案,但我无法弄清楚如何应用蛋糕图案来模拟这样的特征。

谁能指出如何做到这一点?

0 投票
2 回答
172 浏览

scala - 具有存在类型的 Scala 蛋糕模式:编译错误

通过这个问题,我从 Precog 找到了这篇关于“配置”模式的文章。我用两个模块尝试了这个:

但是,我得到了这个编译错误:

在具有边界 <: MyApp.this.AnotherConfig 的 trait AnotherModule 中覆盖类型 Config;
type Config 具有不兼容的类型
type Config = PetStoreConfig 和 AnotherConfig

我不清楚为什么这不起作用(Precog 在他们的示例中也使用了两个组件),有什么想法吗?

0 投票
2 回答
348 浏览

scala - Scala cake-pattern compile error with Precog config pattern

Following from this question, I have now the following:

I get the following compile error:

This is actually the error I have been struggling with. Can somebody explain why it occurs? Currently, as a work-around, I just explicitly cast the config object in each module implementation.

0 投票
2 回答
1399 浏览

unit-testing - How to use mocks with the Cake Pattern

I have the following class:

Typically I'd use this class in production like so:

val linkService = LinkUserService with GoogleOAuthProvider

When it comes to testing, I want to replace the oauthProvider with a mock such that's been trained by my unit test to respond like so: oauthProvider.loadCredential("nobody") returns null. Is this possible? If so, how would I set up my unit test to do so?

0 投票
1 回答
213 浏览

scala - 依赖注入的抽象字段

在 Scala 中,使用下面的依赖注入方法有什么问题吗?

现在我们把事情联系起来

显然,Cake 模式提供了更大的灵活性(尤其是围绕自身类型),但是对于更简单的用例,它的样板代码要少得多,同时仍然提供编译时检查和干净明确的接口。

0 投票
5 回答
560 浏览

scala - Scala 蛋糕模式和依赖冲突

我正在尝试使用 Cake Pattern 在 Scala 中实现依赖注入,但遇到了依赖冲突。由于我找不到具有此类依赖关系的详细示例,因此这是我的问题:

假设我们有以下特征(有 2 个实现):

以及以下两个蛋糕模式模块(在此示例中,它们都是依赖于我们HttpClient的功能的 API):

现在,在创建使用这两个模块的最终应用程序时,我们需要为这两个模块提供httpClient依赖项。但是如果我们想为每个模块提供不同的实现呢?或者只是提供不同配置的依赖项的不同实例(例如使用不同ExecutionContext的实例)?

我们可以在每个模块中以不同的方式命名依赖项,并在它们前面加上模块名称,但这会很麻烦且不优雅,而且如果我们自己不能完全控制模块,也将无法工作。

有任何想法吗?我误解了蛋糕图案吗?

0 投票
0 回答
229 浏览

scala - Cake Pattern 自类型注释与存根 def 或 val

当使用蛋糕模式时,你什么时候想使用自类型注释,例如:

与存根定义

或存根值

更新:我会更具体一点(希望如此)。所有三种形式都定义了对 Bar 实例的需求。所以基本上,任何以任何一种形式混合在这个特征中的非抽象类都必须提供 Bar 的实现。我的问题是,我什么时候想强制使用自类型注释来实现 Bar;我什么时候想使用 def stub 强制和实现 Bar,什么时候我想使用 val stub 强制它。我希望现在这个问题更清楚了。

谢谢内塔