Cake Pattern 中如何分离业务类和辅助特征?
蛋糕模式看起来像如下:
trait UserRepositoryComponent {
val userRepository: UserRepository
class UserRepository {...}
}
trait UserServiceComponent {this: UserRepositoryComponent =>
val userService: UserService
class UserService {...}
}
UserService
和 UserRepository
类是真正的业务类。我们可以在有或没有蛋糕模式的情况下使用它们。
相反,UserServiceComponent
和 UserRepositoryComponent
特征只是辅助样板代码,而不是真正的业务组件。我们需要它们来实现该模式。
鉴于此,我不希望 UserService 和 UserRepository 成为 UserServiceComponent 和 UserRepositoryComponent 的内部类。有道理吗?我可以不将它们实现为内部类吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不需要需要包装您的实现类,例如您可以编写类似的内容:
但是创建组件需要立即实例化包含所有组件的单个对象:
因此,
中的方法>UserRepository
和UserService
将混合在一个实例中,这不一定是您想要的(如果您的组件定义具有相同名称的方法,这将导致问题)。因此,将组件包装在“样板”特征中会创建有用的名称空间。
You don’t need to wrap your implementation classes, e.g. you could write something like that:
But creating you components would need to instantiate a single object containing all your components at once:
So, methods from
UserRepository
andUserService
would be mixed in a single instance, which is not necessarily what you want (and which would cause problems if your components define methods with the same name).Thus, wrapping your components in “boilerplate” traits creates useful namespaces.