Scala中具有类型类的DAO
|
让我的应用程序包含业务类
Order
,Product
,Customer
等,我想将其存储在数据库中或从数据库中检索。
通常,我们为此使用DAO
模式。也就是说,我们为每个业务类定义一个DAO
接口和实现:OrderDAO
,ProductDAO
等。现在,我想使用类型类模式:
trait DAO[T] {
def create(t:T)
... // other CRUD operations
}
...
// DAO implementations for specific business objects
implicit object OrderDAO extends DAO[Order] {
def create(o:Order) {...}
... // other CRUD operations
}
...
// create a business object in the database
def create[T](t:T)(implicit dao:DAO[T]) {dao.create(t)}
现在我的问题是所有DAOs
都使用DataSource
实例(数据库连接的工厂),因此我无法将DAOs
定义为objects
。我应该创建DataSource
的单例实例,并在初始化时将其传递给所有DAOs
。
假设我们有一个函数来创建DataSource
:def dataSource():DataSource = {...}
如何用类型类实现implement8ѭ?
没有找到相关结果
已邀请:
3 个回复
搂腹时
很明显,无论环境如何,您都可以为每个业务类别提供正确的实现。它是这种类型的继承功能,与随后的使用方式无关。
娠侈脚惮顽
抢垢洛韧
通过这种方法,您可以使用ѭ19,而不会降低可测试性。