43 lines
982 B
PHP
43 lines
982 B
PHP
<?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);
|