From 35f5e851c87ef13c32de6d96a1db8e1f05269aa4 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Tue, 27 Dec 2016 08:06:54 +0100 Subject: [PATCH] updated UML for Pool --- Creational/Pool/uml/Pool.uml | 42 +- Creational/Pool/uml/uml.png | Bin 12665 -> 37250 bytes Creational/Pool/uml/uml.svg | 979 ++++++++++++++++++----------------- 3 files changed, 532 insertions(+), 489 deletions(-) diff --git a/Creational/Pool/uml/Pool.uml b/Creational/Pool/uml/Pool.uml index 5a770de..8f3a757 100644 --- a/Creational/Pool/uml/Pool.uml +++ b/Creational/Pool/uml/Pool.uml @@ -1,22 +1,20 @@ - - - PHP - \DesignPatterns\Creational\Pool\Processor - - \DesignPatterns\Creational\Pool\Pool - \DesignPatterns\Creational\Pool\Processor - \DesignPatterns\Creational\Pool\Worker - - - - - - - Fields - Constants - Constructors - Methods - - private - - + + + PHP + \DesignPatterns\Creational\Pool\StringReverseWorker + + \DesignPatterns\Creational\Pool\StringReverseWorker + \DesignPatterns\Creational\Pool\WorkerPool + + + + + + + Fields + Methods + Constructors + + private + + diff --git a/Creational/Pool/uml/uml.png b/Creational/Pool/uml/uml.png index 4bcb05c40b72e2a9692d0c395e5df0c17beaf7c8..5d32c8baee2aa4b8b6c97c3068e33f1e5dfadeec 100644 GIT binary patch literal 37250 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 literal 12665 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 diff --git a/Creational/Pool/uml/uml.svg b/Creational/Pool/uml/uml.svg index 4ddd1b4..508ecf6 100644 --- a/Creational/Pool/uml/uml.svg +++ b/Creational/Pool/uml/uml.svg @@ -1,467 +1,512 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + createdAt + + + + + + + + + + + + + + + + + + + __construct() + + + + + + + + + + + + + + + + + + + run(text) + + + + + + + + + + + + + StringReverseWorker + + + StringReverseWorker + + + + + + + + + + + + + + + + + + + + + + createdAt + + + + + + + + + + + + + + + + + + + __construct() + + + + + + + + + + + + + + + + + + + run(text) + + + + + + + + + + + + + StringReverseWorker + + + StringReverseWorker + + + + + + + + + + + + + + + + + + + + + + + + + occupiedWorkers + + + + + + + + + + + + + + + + freeWorkers + + + + + + + + + + + + + + + + + + + get() + + + + + + + + + + + + + + + + dispose(worker) + + + + + + + + + + + + + + + + count() + + + + + + + + + + + + + WorkerPool + + + WorkerPool + + + + + + + + + + + + + + + + + + + + + + occupiedWorkers + + + + + + + + + + + + + + + + freeWorkers + + + + + + + + + + + + + + + + + + + get() + + + + + + + + + + + + + + + + dispose(worker) + + + + + + + + + + + + + + + + count() + + + + + + + + + + + + + WorkerPool + + + WorkerPool + + +