Ci sono molti modi diversi di guardare a questo. Se fossi in un'intervista, andrei con questo.
Photoshoot shoot = new Photoshoot(
new Camera("Fuji"),
new Subject("Bill"),
new Subject("Dave"),
new Subject("Claire")
);
IEnumerable<Photo> photos = shoot.TakeAllPhotos();
Dove
class Photoshoot
{
private readonly IEnumerable<Subject> _subjects;
private readonly Camera _camera;
public Photoshoot(Camera camera, params Subject[] subjects)
{
_subjects = subjects;
_camera = camera;
}
public IEnumerable<Photo> TakeAllPhotos()
{
List<Photo> photos = new List<Photo>();
foreach(Subject subject in _subjects)
{
// Here is the interaction in question
Call(subject);
_camera.TakePhotoOf(subject);
}
return photos;
}
}
Quindi l'interazione è questa:
Il metodo TakeAllPhotos della classe Photoshoot scorre i soggetti del servizio fotografico, chiama un soggetto quindi usa la sua fotocamera per scattare foto di quell'oggetto.
In un giorno diverso, potrei passare la fotocamera al metodo TakeAllPhotos, ma oggi sto sostenendo che la fotocamera appartiene al photoshoot.
Nota anche che sono passato soggetto al metodo Call (ancora non definito) del Photoshoot piuttosto che chiamare un metodo Call sull'argomento. Il soggetto non dovrebbe sapere come chiamare se stesso, a mio parere.
Questi sono i tipi di conversazioni che un intervistatore vuole che tu abbia. L'interazione specifica non sarà così importante.