- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个article通过 Scala 的 Cake Pattern
解释依赖注入(inject).
我对这种模式的好处的理解是,可以将特征与静态检查混合在(生产与测试)中。
在 Bonér 先生的示例中,他列出了这个完成的(每个示例)代码:
用户存储库组件 和 用户服务组件
我根据我的理解添加了评论。
trait UserRepositoryComponent {
val userRepository: UserRepository // stand-alone component
class UserRepository {
... // actual implementation here
}
}
trait UserServiceComponent {
this: UserRepositoryComponent => //Requires a mixed-in UserRepo*Component
val userService: UserService
class UserService {
... // actual implementation here
}
}
Service
取决于注入(inject)
Repository
零件。
Repository
组件到
UserServiceComponent
:
object ComponentRegistry extends
UserServiceComponent with
UserRepositoryComponent
{
val userRepository = new UserRepository
val userService = new UserService
}
userRepository
或
userService
, 是通过简单的
import
使用它们的正确方法?
ComponentRegistry
目的。
最佳答案
你首先跑进了末日兄弟的面包店:
What are some compelling use cases for dependent method types?
要回答你的问题,正确的使用方法userService
将是使用另一个特征并将其蛋糕化:
trait Example { this: UserServiceComponent =>
def getExampleUser() = userService.getUser("ExampleUser")
}
ComponentRegistry
之类的东西耦合。 .相反,您的应用程序变为:
object Application extends
Example with
UserServiceComponent with
UserRepositoryComponent
{
val userRepository = new UserRepository
val userService = new UserService
}
trait UserRepositoryComponent {
type UserRepository <: UserRepositoryLike
val userRepository: UserRepository
trait UserRepositoryLike {
def getUserOrSomething()
}
}
trait UserRepositoryComponentImpl extends UserRepositoryComponent {
type UserRepository = UserRepositoryImpl
val userRepository = new UserRepositoryImpl
class UserRepositoryImpl extends UserRepositoryLike {
override def getUserOrSomething() = ???
}
}
trait UserServiceComponent {
this: UserRepositoryComponent =>
type UserService <: UserServiceLike
val userService: UserService
trait UserServiceLike {
def getUserNameById(id: Int): String
}
}
trait UserServiceComponentImpl extends UserServiceComponent {
this: UserRepositoryComponent =>
type UserService = UserServiceImpl
val userService = new UserServiceImpl
class UserServiceImpl extends UserServiceLike {
override def getUserNameById(id: Int) = userRepository.getUserOrSomething
}
}
trait Example {
this: UserServiceComponent =>
def getExampleUser() = userService.getUserNameById(1)
}
object Application extends
Example with
UserRepositoryComponentImpl with
UserServiceComponentImpl
关于scala - 带有蛋糕模式的 Scala 中的 DI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25313143/
如何使这个 Cakephp 查询能够计算不同的值? $matches = $this->Product->find('count', array( 'condi
如何使这个 Cakephp 查询计数不同? $matches = $this->Product->find('count', array( 'condition
如何使这个 Cakephp 查询计数不同? $matches = $this->Product->find('count', array( 'condition
重复 What is a PHP Framework?and many more 到目前为止,我一直在使用 PHP 进行小的调整,主要是使用 WordPress。什么是 PHP 框架?为什么我需要它们
我正在为我的项目使用 CakePHP...为了加快我的代码速度,我只想获得一些与我的实际对象相关的模型类型: $result = $this->Category->find(
我们正在尝试找出蛋糕中哪一 block 的平均值最高。 蛋糕上有数字 [1, 3, 4, 2, 2] 第 [3, 4] block 的平均结果为 3.5 得出最高平均值的切片就是我们的答案 最佳答案
我以前用过几次 CakePHP,但这是我第一次尝试 Bake。在我的 Mac 上,我运行 CakePHP 1.3、PHP5.3.3 和 MySQL。我已经创建了我的数据库表并且应用程序连接到数据库。
我目前正在构建一个与 teamcity 交互的 Cake 构建脚本,我想提供进度消息。我可以很容易地报告任务名称,但我无法找出构建脚本中的进度。像(“执行 5 个任务中的第 1 个”)那样思考。 有什
如何在 cakephp 网站上设置 iPad/iPhone 书签图标?我使用的是正确的文件名 - apple-touch-icon.png - 我尝试将其上传到/webroot 和/webroot 上
在 AppController 中: public $helpers=array("Session","Html","Form"); public $components = array( '
我正在 Cake PHP 1.2 网站上测试我们网站的数据库从 Sql Server 到 MySQL 的转换,现在我在 Cake 存储模型信息的方式上遇到了错误。在创建我的“emp”(员工,不是我的命
我的模型相关如下: Post BELONGS_TO Parent Parent HAS_MANY ParentAdmin 现在,如果满足帖子的属性值,我希望找到所有帖子的所有父级管理员。等效的 sql
我想用从 Excel 工作表中提取的“平面”数据填充我的数据库。所有记录都以数组形式提供(类似于 $request->data),但它们的主键设置了必须保留的值。 我的代码: $imported =
我知道已经有一个类似的问题here ,但我认为我的问题完全不同,值得创建一个新帖子。 我使用 CAKE 0.21.1.0。 作为 TeamCity 上的一个构建步骤,我正在执行 build.ps1,它
我正在使用 CakePHP 2.4.7 并且我正在尝试在远程主机上执行 CakePHP shell。 我以 root 身份连接到服务器,然后执行 $ [path_to_my_foler]/app/Co
我的模型定义如下: columnType('data', 'json'); return $schema; } } 保存到数据库和检索数据时正确应用 JSON 格式
我在 CakePHP 1.3 中编写了一个具有返回值的 shell 方法。 我希望能够从 Controller 中访问该方法,以便将其返回值传递到 View 中。 我不确定如何从 Controller
我正在尝试运行我的蛋糕 shell 脚本,但输出如下所示: -bash-3.2$ ../cake/console/cake audit ../cake/console/cake: line 30:/r
我在 cake php 3 中有三个表: - 图片表 - 图片有图片表 - 图片类型表 一个图像有多个子图像。我已经与一个链接在一起belongsToMany 协会。 $this->belongsTo
我是一名优秀的程序员,十分优秀!