- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Web 应用程序中,授权用户至少有 4 个“方面”:http session 相关数据、持久数据、facebook 数据、运行时业务数据。
我决定使用案例类组合而不是特征至少有两个原因:
我想知道经验丰富的 scalaists 对这个问题的看法。看起来 traits 和/或 cake pattern 应该适合这样的任务,但正如我上面提到的那样,存在问题......很明显,我不仅想快速轻松地实现它,而且还想深入理解它以便使用 future 。
那么我的决定到底有没有瑕疵和误解,还是正确的呢?相关代码如下所示:
case class FacebookUserInfo(name: String, friends: List[Long])
case class HttpUserInfo(sessionId: String, lastInteractionTime: Long, reconnect: Boolean)
case class RuntimeQuizUserInfo(recentScore: Int)
trait UserState {
def db: User
def http: HttpUserInfo
}
case class ConnectingUser(db: User, http: HttpUserInfo) extends UserState
case class DisconnectedUser(db: User, http: HttpUserInfo, facebook: Option[FacebookUserInfo]) extends UserState
case class AuthorizedUser(db: User, http: HttpUserInfo, facebook: FacebookUserInfo,
quiz: RuntimeQuizUserInfo) extends UserState
最佳答案
我认为答案很简单:选择继承,只要一切都真正“属于”您的对象,只要一切都在同一个“问题域”中。
蛋糕模式的目的是分解出对象的某些部分,这些部分在某种程度上是必需的,但实际上并不是它的一部分,例如策略、装饰、配置、上下文等。日志记录就是一个典型的例子。一般来说,我们谈论的是您不想“硬接线”的情况,例如您会考虑在 Java 中使用 DI 框架(如 Guice 或 Spring)的情况。参见 http://jonasboner.com/2008/10/06/real-world-scala-dependency-injection-di.html一个很好的例子。
通常有助于决定做什么的一个问题是:“我如何测试对象的行为?”。如果你发现搭建一个合适的测试环境有困难,那么很可能你应该解耦,这就是DI,这通常可以用蛋糕模式很方便地实现。
关于Scala 特征/蛋糕模式与案例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3879268/
如何使这个 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
我是一名优秀的程序员,十分优秀!