Scala工厂模式与一致性
希望对进一步了解scala有所帮助 我经常看到这是一种工厂模式:Scala工厂模式与一致性,scala,design-patterns,akka,factory-pattern,Scala,Design Patterns,Akka,Factory Pattern,希望对进一步了解scala有所帮助 我经常看到这是一种工厂模式: trait Animal private class Dog extends Animal private class Cat extends Animal object Animal { def apply(kind: String) = kind match { case "dog" => new Dog() case "cat" => new Cat()
trait Animal
private class Dog extends Animal
private class Cat extends Animal
object Animal {
def apply(kind: String) = kind match {
case "dog" => new Dog()
case "cat" => new Cat()
}
}
Animal("dog")
我想知道,考虑到对象的使用,这对于一致性意味着什么。在为许多客户提供服务时,使用这样的工厂模式是否“足够好”?工厂会是一个循环访问的演员池吗?是否有更好的基于期货的方法?我希望避免工厂模式成为设计中的瓶颈,因为在这些设计中,有很多短生命的动物实例被创建
或者我只是被误导了,担心工厂会成为瓶颈?这是一个很大的问题,与上面给出的例子相比有一点飞跃。你能把它缩小一点吗?并发是关于对共享状态的变异的争用,上面的例子中没有变异,所以在这种情况下,一个就可以了。但我们不能将其推广到构建器模式的所有用途。如果您担心JVM分配对象的争用,那么请澄清一下,我们可以讨论一下。我认为您担心得太多了。这是一个简单的对象创建。你没有任何可变状态,所以根本不用担心。这个问题没有任何意义。您的
apply
方法可以由任意多个线程并行调用。它没有共享任何可变状态。谢谢您的回答。我想我不太理解这个概念。我的想法是,既然“对象”是一个单例,我就必须在apply方法中处理“锁定”问题。但正如所指出的,在这个例子中没有状态。这些评论确实有助于澄清,谢谢大家。