From 658d6015071443d1849bc0820181b730099130d4 Mon Sep 17 00:00:00 2001 From: John Webb Date: Thu, 31 Jul 2014 14:34:10 -0500 Subject: [PATCH] Added Creational pattern UMLs --- .../AbstractFactory/uml/AbstractFactory.uml | 38 + Creational/AbstractFactory/uml/uml.png | Bin 0 -> 11811 bytes Creational/AbstractFactory/uml/uml.svg | 379 ++++++++ Creational/Builder/uml/Builder.uml | 54 ++ Creational/Builder/uml/uml.png | Bin 0 -> 23467 bytes Creational/Builder/uml/uml.svg | 832 ++++++++++++++++++ .../FactoryMethod/uml/FactoryMethod.uml | 55 ++ Creational/FactoryMethod/uml/uml.png | Bin 0 -> 16925 bytes Creational/FactoryMethod/uml/uml.svg | 623 +++++++++++++ Creational/Multiton/uml/Multiton.uml | 20 + Creational/Multiton/uml/uml.png | Bin 0 -> 6036 bytes Creational/Multiton/uml/uml.svg | 197 +++++ Creational/Pool/uml/Pool.uml | 22 + Creational/Pool/uml/uml.png | Bin 0 -> 12665 bytes Creational/Pool/uml/uml.svg | 467 ++++++++++ Creational/Prototype/uml/Prototype.uml | 35 + Creational/Prototype/uml/uml.png | Bin 0 -> 8678 bytes Creational/Prototype/uml/uml.svg | 305 +++++++ .../SimpleFactory/uml/SimpleFactory.uml | 36 + Creational/SimpleFactory/uml/uml.png | Bin 0 -> 10280 bytes Creational/SimpleFactory/uml/uml.svg | 286 ++++++ Creational/Singleton/uml/Singleton.uml | 20 + Creational/Singleton/uml/uml.png | Bin 0 -> 4466 bytes Creational/Singleton/uml/uml.svg | 162 ++++ .../StaticFactory/uml/StaticFactory.uml | 36 + Creational/StaticFactory/uml/uml.png | Bin 0 -> 6632 bytes Creational/StaticFactory/uml/uml.svg | 207 +++++ 27 files changed, 3774 insertions(+) create mode 100644 Creational/AbstractFactory/uml/AbstractFactory.uml create mode 100644 Creational/AbstractFactory/uml/uml.png create mode 100644 Creational/AbstractFactory/uml/uml.svg create mode 100644 Creational/Builder/uml/Builder.uml create mode 100644 Creational/Builder/uml/uml.png create mode 100644 Creational/Builder/uml/uml.svg create mode 100644 Creational/FactoryMethod/uml/FactoryMethod.uml create mode 100644 Creational/FactoryMethod/uml/uml.png create mode 100644 Creational/FactoryMethod/uml/uml.svg create mode 100644 Creational/Multiton/uml/Multiton.uml create mode 100644 Creational/Multiton/uml/uml.png create mode 100644 Creational/Multiton/uml/uml.svg create mode 100644 Creational/Pool/uml/Pool.uml create mode 100644 Creational/Pool/uml/uml.png create mode 100644 Creational/Pool/uml/uml.svg create mode 100644 Creational/Prototype/uml/Prototype.uml create mode 100644 Creational/Prototype/uml/uml.png create mode 100644 Creational/Prototype/uml/uml.svg create mode 100644 Creational/SimpleFactory/uml/SimpleFactory.uml create mode 100644 Creational/SimpleFactory/uml/uml.png create mode 100644 Creational/SimpleFactory/uml/uml.svg create mode 100644 Creational/Singleton/uml/Singleton.uml create mode 100644 Creational/Singleton/uml/uml.png create mode 100644 Creational/Singleton/uml/uml.svg create mode 100644 Creational/StaticFactory/uml/StaticFactory.uml create mode 100644 Creational/StaticFactory/uml/uml.png create mode 100644 Creational/StaticFactory/uml/uml.svg diff --git a/Creational/AbstractFactory/uml/AbstractFactory.uml b/Creational/AbstractFactory/uml/AbstractFactory.uml new file mode 100644 index 0000000..a44e64c --- /dev/null +++ b/Creational/AbstractFactory/uml/AbstractFactory.uml @@ -0,0 +1,38 @@ + + + PHP + \DesignPatterns\Creational\AbstractFactory\AbstractFactory + + \DesignPatterns\Creational\AbstractFactory\Html\Text + \DesignPatterns\Creational\AbstractFactory\Html\Picture + \DesignPatterns\Creational\AbstractFactory\HtmlFactory + \DesignPatterns\Creational\AbstractFactory\JsonFactory + \DesignPatterns\Creational\AbstractFactory\AbstractFactory + \DesignPatterns\Creational\AbstractFactory\MediaInterface + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Creational/AbstractFactory/uml/uml.png b/Creational/AbstractFactory/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..6de2767731a57fd874386805a91a94d0a7f35129 GIT binary patch literal 11811 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + createPicture(path, name) + + + + + + + + + createText(content) + + + + + + + + + + + + + HtmlFactory + + + HtmlFactory + + + + + + + + + + + + + + + + + + render() + + + + + + + + + + + + + Picture + + + Picture + + + + + + + + + + + + + + + + + + render() + + + + + + + + + + + + + Text + + + Text + + + + + + + + + + + + + + + + + + createPicture(path, name) + + + + + + + + + createText(content) + + + + + + + + + + + + + JsonFactory + + + JsonFactory + + + + + + + + + + + + + + + + + + createText(content) + + + + + + + + + createPicture(path, name) + + + + + + + + + + + + + AbstractFactory + + + AbstractFactory + + + + + + + + + + + + + + + + + + render() + + + + + + + + + + + + + MediaInterface + + + MediaInterface + + + + + + + + + + + diff --git a/Creational/Builder/uml/Builder.uml b/Creational/Builder/uml/Builder.uml new file mode 100644 index 0000000..1921c7a --- /dev/null +++ b/Creational/Builder/uml/Builder.uml @@ -0,0 +1,54 @@ + + + PHP + \DesignPatterns\Creational\Builder\BikeBuilder + + \DesignPatterns\Creational\Builder\Parts\Door + \DesignPatterns\Creational\Builder\Parts\Engine + \DesignPatterns\Creational\Builder\CarBuilder + \DesignPatterns\Creational\Builder\Parts\Wheel + \DesignPatterns\Creational\Builder\Parts\Bike + \DesignPatterns\Creational\Builder\Parts\Car + \DesignPatterns\Creational\Builder\BikeBuilder + \DesignPatterns\Creational\Builder\BuilderInterface + \DesignPatterns\Creational\Builder\Parts\Vehicle + \DesignPatterns\Creational\Builder\Director + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Creational/Builder/uml/uml.png b/Creational/Builder/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..3a990dd9d6ce60d3543815a254d9e73c1c75627e GIT binary patch literal 23467 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Door + + + Door + + + + + + + + + + + + + + + + + + + + + + Engine + + + Engine + + + + + + + + + + + + + + + + + + + + + + + + + car + + + + + + + + + + + + addDoors() + + + + + + + + + addEngine() + + + + + + + + + addWheel() + + + + + + + + + createVehicle() + + + + + + + + + getVehicle() + + + + + + + + + + + + + CarBuilder + + + CarBuilder + + + + + + + + + + + + + + + + Bike + + + Bike + + + + + + + + + + + + + + + + Wheel + + + Wheel + + + + + + + + + + + + + + + + + + + + + + + + + bike + + + + + + + + + + + + addDoors() + + + + + + + + + addEngine() + + + + + + + + + addWheel() + + + + + + + + + createVehicle() + + + + + + + + + getVehicle() + + + + + + + + + + + + + BikeBuilder + + + BikeBuilder + + + + + + + + + + + + + + + + Car + + + Car + + + + + + + + + + + + + + + + + + + + + + + + + data + + + + + + + + + + + + setPart(key, value) + + + + + + + + + + + + + Vehicle + + + Vehicle + + + + + + + + + + + + + + + + + + + + + + + + createVehicle() + + + + + + + + + addWheel() + + + + + + + + + addEngine() + + + + + + + + + addDoors() + + + + + + + + + getVehicle() + + + + + + + + + + + + + BuilderInterface + + + BuilderInterface + + + + + + + + + + + + + + + + + + + + + + + + build(builder) + + + + + + + + + + + + + Director + + + Director + + + + + + + + + + + + + + + diff --git a/Creational/FactoryMethod/uml/FactoryMethod.uml b/Creational/FactoryMethod/uml/FactoryMethod.uml new file mode 100644 index 0000000..ec4249c --- /dev/null +++ b/Creational/FactoryMethod/uml/FactoryMethod.uml @@ -0,0 +1,55 @@ + + + PHP + \DesignPatterns\Creational\FactoryMethod\Bicycle + + \DesignPatterns\Creational\FactoryMethod\FactoryMethod + \DesignPatterns\Creational\FactoryMethod\Bicycle + \DesignPatterns\Creational\FactoryMethod\GermanFactory + \DesignPatterns\Creational\FactoryMethod\VehicleInterface + \DesignPatterns\Creational\FactoryMethod\ItalianFactory + \DesignPatterns\Creational\FactoryMethod\Ferrari + \DesignPatterns\Creational\FactoryMethod\Porsche + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Creational/FactoryMethod/uml/uml.png b/Creational/FactoryMethod/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..0687038eefb535884c7e163d0c0c372082740e45 GIT binary patch literal 16925 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 ZwRhl<*Dn5P7(L=sDKU9bsPM-x{|B*wE;0ZB literal 0 HcmV?d00001 diff --git a/Creational/FactoryMethod/uml/uml.svg b/Creational/FactoryMethod/uml/uml.svg new file mode 100644 index 0000000..62b8cc6 --- /dev/null +++ b/Creational/FactoryMethod/uml/uml.svg @@ -0,0 +1,623 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CHEAP + + + + + + + + + + FAST + + + + + + + + + + + + createVehicle(type) + + + + + + + + + create(type) + + + + + + + + + + + + + FactoryMethod + + + FactoryMethod + + + + + + + + + + + + + + + + + + + color + + + + + + + + + + + + setColor(rgb) + + + + + + + + + + + + + Bicycle + + + Bicycle + + + + + + + + + + + + + + + + + + createVehicle(type) + + + + + + + + + + + + + GermanFactory + + + GermanFactory + + + + + + + + + + + + + + + + + + + + + setColor(rgb) + + + + + + + + + + + + + VehicleInterface + + + VehicleInterface + + + + + + + + + + + + + + + + + + + + + + + + createVehicle(type) + + + + + + + + + + + + + ItalianFactory + + + ItalianFactory + + + + + + + + + + + + + + + + + + + color + + + + + + + + + + + + setColor(rgb) + + + + + + + + + + + + + Ferrari + + + Ferrari + + + + + + + + + + + + + + + + + + + + + + + + + color + + + + + + + + + + + + setColor(rgb) + + + + + + + + + addTuningAMG() + + + + + + + + + + + + + Porsche + + + Porsche + + + + + + + + + + + + + + + + + diff --git a/Creational/Multiton/uml/Multiton.uml b/Creational/Multiton/uml/Multiton.uml new file mode 100644 index 0000000..7fbe4db --- /dev/null +++ b/Creational/Multiton/uml/Multiton.uml @@ -0,0 +1,20 @@ + + + PHP + \DesignPatterns\Creational\Multiton\Multiton + + \DesignPatterns\Creational\Multiton\Multiton + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Creational/Multiton/uml/uml.png b/Creational/Multiton/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..df5f72167ccd4fb35d0efdae42f6dd1227dbb79d GIT binary patch literal 6036 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 literal 0 HcmV?d00001 diff --git a/Creational/Multiton/uml/uml.svg b/Creational/Multiton/uml/uml.svg new file mode 100644 index 0000000..fe459ab --- /dev/null +++ b/Creational/Multiton/uml/uml.svg @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + instances + + + + + + + + + + + + + INSTANCE_1 + + + + + + + + + + INSTANCE_2 + + + + + + + + + + + + __construct() + + + + + + + + + + + + getInstance(instanceName) + + + + + + + + + __clone() + + + + + + + + + __wakeup() + + + + + + + + + + + + + Multiton + + + Multiton + + + diff --git a/Creational/Pool/uml/Pool.uml b/Creational/Pool/uml/Pool.uml new file mode 100644 index 0000000..5a770de --- /dev/null +++ b/Creational/Pool/uml/Pool.uml @@ -0,0 +1,22 @@ + + + PHP + \DesignPatterns\Creational\Pool\Processor + + \DesignPatterns\Creational\Pool\Pool + \DesignPatterns\Creational\Pool\Processor + \DesignPatterns\Creational\Pool\Worker + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Creational/Pool/uml/uml.png b/Creational/Pool/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..4bcb05c40b72e2a9692d0c395e5df0c17beaf7c8 GIT binary patch literal 12665 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 literal 0 HcmV?d00001 diff --git a/Creational/Pool/uml/uml.svg b/Creational/Pool/uml/uml.svg new file mode 100644 index 0000000..4ddd1b4 --- /dev/null +++ b/Creational/Pool/uml/uml.svg @@ -0,0 +1,467 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + instances + + + + + + + + + + class + + + + + + + + + + + + __construct(class) + + + + + + + + + + + + get() + + + + + + + + + dispose(instance) + + + + + + + + + + + + + Pool + + + Pool + + + + + + + + + + + + + + + + + + + pool + + + + + + + + + + processing + + + + + + + + + + maxProcesses + + + + + + + + + + waitingQueue + + + + + + + + + + + + __construct(pool) + + + + + + + + + + + + process(image) + + + + + + + + + createWorker(image) + + + + + + + + + processDone(worker) + + + + + + + + + pushToWaitingQueue(image) + + + + + + + + + popFromWaitingQueue() + + + + + + + + + + + + + Processor + + + Processor + + + + + + + + + + + + + + + + + + __construct() + + + + + + + + + + + + run(image, callback) + + + + + + + + + + + + + Worker + + + Worker + + + diff --git a/Creational/Prototype/uml/Prototype.uml b/Creational/Prototype/uml/Prototype.uml new file mode 100644 index 0000000..2712fba --- /dev/null +++ b/Creational/Prototype/uml/Prototype.uml @@ -0,0 +1,35 @@ + + + PHP + \DesignPatterns\Creational\Prototype\BarBookPrototype + + \DesignPatterns\Creational\Prototype\BookPrototype + \DesignPatterns\Creational\Prototype\FooBookPrototype + \DesignPatterns\Creational\Prototype\BarBookPrototype + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Creational/Prototype/uml/uml.png b/Creational/Prototype/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..23a3b919c1a88333330e61316cbdcde2c6af9a7f GIT binary patch literal 8678 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 Rfb$!--n>$fED|^L`+p(35Z3?z literal 0 HcmV?d00001 diff --git a/Creational/Prototype/uml/uml.svg b/Creational/Prototype/uml/uml.svg new file mode 100644 index 0000000..34844a0 --- /dev/null +++ b/Creational/Prototype/uml/uml.svg @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + category + + + + + + + + + + + + __clone() + + + + + + + + + + + + + FooBookPrototype + + + FooBookPrototype + + + + + + + + + + + + + + + + + + + title + + + + + + + + + + category + + + + + + + + + + + + __clone() + + + + + + + + + getTitle() + + + + + + + + + setTitle(title) + + + + + + + + + + + + + BookPrototype + + + BookPrototype + + + + + + + + + + + + + + + + + + + category + + + + + + + + + + + + __clone() + + + + + + + + + + + + + BarBookPrototype + + + BarBookPrototype + + + + + + + + + + + diff --git a/Creational/SimpleFactory/uml/SimpleFactory.uml b/Creational/SimpleFactory/uml/SimpleFactory.uml new file mode 100644 index 0000000..f51ce6c --- /dev/null +++ b/Creational/SimpleFactory/uml/SimpleFactory.uml @@ -0,0 +1,36 @@ + + + PHP + \DesignPatterns\Creational\SimpleFactory\ConcreteFactory + + \DesignPatterns\Creational\SimpleFactory\Scooter + \DesignPatterns\Creational\SimpleFactory\ConcreteFactory + \DesignPatterns\Creational\SimpleFactory\VehicleInterface + \DesignPatterns\Creational\SimpleFactory\Bicycle + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Creational/SimpleFactory/uml/uml.png b/Creational/SimpleFactory/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..d22c00adafaeae97336da8b805b9821c77402f50 GIT binary patch literal 10280 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 F{{YHk>tp}` literal 0 HcmV?d00001 diff --git a/Creational/SimpleFactory/uml/uml.svg b/Creational/SimpleFactory/uml/uml.svg new file mode 100644 index 0000000..7c966c2 --- /dev/null +++ b/Creational/SimpleFactory/uml/uml.svg @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + driveTo(destination) + + + + + + + + + + + + + Scooter + + + Scooter + + + + + + + + + + + + + + + + + + + typeList + + + + + + + + + + + + __construct() + + + + + + + + + + + + createVehicle(type) + + + + + + + + + + + + + ConcreteFactory + + + ConcreteFactory + + + + + + + + + + + + + + + + + + driveTo(destination) + + + + + + + + + + + + + VehicleInterface + + + VehicleInterface + + + + + + + + + + + + + + + + + + driveTo(destination) + + + + + + + + + + + + + Bicycle + + + Bicycle + + + + + + + + + + + diff --git a/Creational/Singleton/uml/Singleton.uml b/Creational/Singleton/uml/Singleton.uml new file mode 100644 index 0000000..c56949e --- /dev/null +++ b/Creational/Singleton/uml/Singleton.uml @@ -0,0 +1,20 @@ + + + PHP + \DesignPatterns\Creational\Singleton\Singleton + + \DesignPatterns\Creational\Singleton\Singleton + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Creational/Singleton/uml/uml.png b/Creational/Singleton/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..c9a2f192e3a63626ac51c8403def9347ea6fae89 GIT binary patch literal 4466 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 RIXEo^prc`+4pX%Y{~wpLo%;X) literal 0 HcmV?d00001 diff --git a/Creational/Singleton/uml/uml.svg b/Creational/Singleton/uml/uml.svg new file mode 100644 index 0000000..f8e69cf --- /dev/null +++ b/Creational/Singleton/uml/uml.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + instance + + + + + + + + + + + + __construct() + + + + + + + + + + + + getInstance() + + + + + + + + + __clone() + + + + + + + + + __wakeup() + + + + + + + + + + + + + Singleton + + + Singleton + + + diff --git a/Creational/StaticFactory/uml/StaticFactory.uml b/Creational/StaticFactory/uml/StaticFactory.uml new file mode 100644 index 0000000..4137d4d --- /dev/null +++ b/Creational/StaticFactory/uml/StaticFactory.uml @@ -0,0 +1,36 @@ + + + PHP + \DesignPatterns\Creational\StaticFactory\FormatNumber + + \DesignPatterns\Creational\StaticFactory\FormatNumber + \DesignPatterns\Creational\StaticFactory\StaticFactory + \DesignPatterns\Creational\StaticFactory\FormatString + \DesignPatterns\Creational\StaticFactory\FormatterInterface + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Creational/StaticFactory/uml/uml.png b/Creational/StaticFactory/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..f1b66881166f2e4c033080d07e013064721ced41 GIT binary patch literal 6632 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 NqMWL1sq|~#{{fXYv)%vz literal 0 HcmV?d00001 diff --git a/Creational/StaticFactory/uml/uml.svg b/Creational/StaticFactory/uml/uml.svg new file mode 100644 index 0000000..e57a79b --- /dev/null +++ b/Creational/StaticFactory/uml/uml.svg @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + FormatNumber + + + FormatNumber + + + + + + + + + + + + + + + + + + factory(type) + + + + + + + + + + + + + StaticFactory + + + StaticFactory + + + + + + + + + + + + + + + + FormatString + + + FormatString + + + + + + + + + + + + + + + + FormatterInterface + + + FormatterInterface + + + + + + + + + + +