1
Учитывая следующий сценарийScala: Dependency Injection
abstract class Animal {/***/}
class Dog(s : String) extends Animal {/***/}
class Cat(s :String) extends Animal {/***/}
class C() {
val animal: Animal = new Dog(name)
private def name = "name for animal that C knows how to calculate"
}
Как я могу предоставить экземпляр Animal С, вместо того, чтобы быть C тот, кто его создает?
можно сделать что-то вроде
class B(f : String => Animal) {
val animal: Animal = f(name)
private def name = "name for animal that B knows how to calculate"
}
, который затем позволяет мне
val bWithDog = new B((name: String) => new Dog(name))
val bWithCat = new B((name: String) => new Cat(name))
что моя цель Но является ли это чистое решение? Или не имеет смысла предоставлять Animal для C, так как только C знает, как вычислить его имя?
Я не знаю, как построить животное снаружи C, так как только C знает, как установить его имя – Bruno
О, я понимаю, что вы имеете в виду, вы не упомянули об этом в вопросе. – pedrofurla