Abstract Factory
This commit is contained in:
42
code/abstract_factory.php
Normal file
42
code/abstract_factory.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package: patterns
|
||||
* @author: Yevhen Odynets
|
||||
* @date: 2025-07-03
|
||||
* @time: 20:20
|
||||
*/
|
||||
|
||||
declare(strict_types = 1);
|
||||
|
||||
use Pattern\Creational\AbstractFactory\{NovapostDeliveryFactory, UkrpostDeliveryFactory};
|
||||
use Pattern\Creational\AbstractFactory\{JustinDeliveryFactory, MeestDeliveryFactory};
|
||||
|
||||
/**
|
||||
* @param array $factories
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function delivery(array $factories): void
|
||||
{
|
||||
foreach ($factories as $factory) {
|
||||
// getting the delivery service
|
||||
$deliveryService = $factory->createDeliveryService();
|
||||
// getting the parcel
|
||||
$package = $factory->createPackage();
|
||||
// checking the parcel
|
||||
$package->getConsist();
|
||||
// sending the parcel
|
||||
$deliveryService->sendPackage($package);
|
||||
echo '<hr/>' . PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
$factories = [
|
||||
new MeestDeliveryFactory(),
|
||||
new NovapostDeliveryFactory(),
|
||||
new JustinDeliveryFactory(),
|
||||
new UkrpostDeliveryFactory(),
|
||||
];
|
||||
|
||||
delivery($factories);
|
||||
Reference in New Issue
Block a user