我想用我可以插入类的方法创建轻量级接口。下面是Scala中的一个简短示例:
class DB {
def find(id: String) = ...
}
trait Transformation extends DB {
def transform(obj: String): String
override def find(id: String) =
transform(super.find(id))
}
trait Cache extends DB {
val cache = Cache()
override def find(id: String) = {
...
if (cache.contains(id))
cache.find(id)
else {
cache.set(id, super.find(id))
cache.get(id)
}
}
}
有了这些类(traits),我们可以用转换、缓存或两者来实例化DB类。注意,转换有一个抽象的方法转换,它仍然需要在具体的类中实现。
new DB() with Transformation {
def transform(obj: String): obj.toLower()
}
new DB() with Cache
new DB() with Transformation with Cache {
def transform(obj: String): obj.toLower()
}
有没有办法在Python中实现这样的功能?我知道有一个针对Python的Traits包,但是它的目的似乎不同。
目前没有回答
相关问题 更多 >
编程相关推荐