cours/design pattern factory.md
Oscar Plaisant 602a41e7f8 update
2024-12-25 22:30:24 +01:00

10 KiB

excalidraw-plugin, tags, excalidraw-open-md
excalidraw-plugin tags excalidraw-open-md
parsed
excalidraw
true

up:: design patterns #s/informatique

$= "![[" + dv.current().file.name + ".svg|1000]]"

%%

Excalidraw Data

Text Elements

Abstract classes ^IKzYspr6

Factory ^iV4yr7br

Instantiated objects ^iebSCluS

.create() ^jQHgzmlb

.create() ^PAYFzMiG

abstract class A ^ojXI0yFv

argument ^jFCC4sQH

argument ^VMBycgMv

abstract class B ^CtWxe7an

B object ^RuRucpcu

A object ^FArPCVM9

Drawing

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

%%