Temps estimé: 10 minutes
MFPrinter 2
Étape 1
Reprenez votre design que vous aviez élaboré à l'étape 1 de l'exercice.
Est-ce qu'il respecte l'ISP? Est-ce un bon design?
Étape 2
Posez-vous les mêmes questions concernant le design proposé à l'étape 2.
Étape 3
Que se passerait-il si l'on voulait imprimer le courriel dans un PDF (considérant qu'il existe des pilotes d'imprimante PDF pour votre OS)? Ou encore simplement à l'aide d'une imprimante qui n'est pas multi-fonctions?
Étape 4
Proposez un meilleur design.
Une première version:
[EmailReader] ---> [<I> Printer] [<I> Scanner] <-- [EmailComposer]
^ ^ ^
| | |
+-------------+ +-----+-------+
| |
[PDFPrinter] [HPOfficeJet]
Question bonus: Devrait-on faire implémenter directement HPOfficeJet
de Printer
et Scanner
ou plutôt créer une autre abstraction intermédiaire MFPrinter
? Quels sont les critères pour décider cela? (aucune réponse ne sera donnée pour vous laisser y réfléchir...)
Mais est-ce que le client EmailReader
et le client EmailComposer
veulent vraiment collaborer avec une imprimante ou un numériseur? Quelle est la capacité recherchée exactement?
[EmailReader] ---> [<I> Exporter] [<I> DocumentImporter] <-- [EmailComposer]
^ ^ ^
| | |
+-------------+ +-----+-------+
| |
[PDFPrinter] [HPOfficeJet]
Note: On pourrait trouver de meilleurs nom ici en faisant appel à un expert du domaine ;)