L'adapter c'est pas Bibliothèque c'est ConteneurLivre.
Le pattern en soit est juste, mais mal intégré pour pouvoir faire des tests unitaires.
Pour comprendre pourquoi ça n'est pas testable tu peux lire ça : http://julien-pauli.developpez.com/tutor...it-avance/
Plus précisément la partie injection de dépendance.
De manière globale si tu suis tous les principes SOLID avancé dans ce tutoriel, ton code sera beaucoup plus propre et en plus testable.
Voilà en Scala ce que ça donne :
Le pattern en soit est juste, mais mal intégré pour pouvoir faire des tests unitaires.
Pour comprendre pourquoi ça n'est pas testable tu peux lire ça : http://julien-pauli.developpez.com/tutor...it-avance/
Plus précisément la partie injection de dépendance.
De manière globale si tu suis tous les principes SOLID avancé dans ce tutoriel, ton code sera beaucoup plus propre et en plus testable.
Voilà en Scala ce que ça donne :
import scala.collection.mutable.ListBuffer
trait StorageLibrary
{
def store(item: Book): ListBuffer[Book]
def getByTitle(title: String): Option[Book]
}
class Book(protected var title: String, protected var text: String)
{
def getTitle = title
def getText = text
}
class Storage extends StorageLibrary
{
protected val books = new ListBuffer[Book]
def store(book: Book) = books += book
def getByTitle(title: String): Option[Book] = books.find(_.getTitle == title)
}
class Library(val storage: StorageLibrary)
{
def addBook(book: Book) = storage.store(book)
def getByTitle(title: String): Option[Book] = storage.getByTitle(title)
}
object Main extends App
{
val storage = new Storage
val library = new Library(storage)
val book = new Book("Lorem Ipsum", "Lorem ipsum dolor sit amet, consectetur adipisicing elit,...")
library.addBook(book)
val bookFound = library.getByTitle("Lorem Ipsum")
bookFound match {
case None => println("Book not found")
case Some(book) => println("Book found : " + book)
}
}