GLO-4002 - Site du cours 2023

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?

PDFPrinter

É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 ;)