【发布时间】:2011-12-03 16:17:25
【问题描述】:
我有一个基于 Moose 的课程 (Foo),它有 4 个属性,可以说:
SF1...SF4
HashRef[Any] 类型的每个。
目前都有默认值。稍后,我们将从 MySQL 表中获取这些值。
我的方法是,让Foo 类根据数据的来源使用角色,我可以将SF1...SF4 存储在一个名为Foo::DB 的角色中,它将为SF1...SF3 提供默认值来自数据库。
还有一个角色,Foo::Local,它将具有硬编码的默认值,所以以后,当我们使用数据库时,我只需要更改'with....'。
我是朝着正确的方向前进,还是应该采取不同的方式?
【问题讨论】:
-
短语“...一个名为 Foo::DB 的角色 [...] 将提供 [...] 数据库中的默认值。] 引发了一个危险信号。默认值来自数据库?这可能只是措辞问题。但无论如何,与大多数其他问题一样,这取决于您使用这种方法的原因。如果用于原型制作或测试,该方法是显而易见的,但如果您想要一些生产代码可以切换数据源,也许不那么紧密的绑定更好。