# sync-basalam/1.10.2/includes/Admin/Product/ProductDataFactory.php

ووسلام – همگام سازی ووکامرس و باسلام, version 1.10.2. 46 lines.

- Page: https://pluginprobe.com/plugins/sync-basalam/1.10.2/code/includes/Admin/Product/ProductDataFactory.php
- Raw: https://pluginprobe.com/plugins/sync-basalam/1.10.2/raw/includes/Admin/Product/ProductDataFactory.php
- Modified: 2026-07-19T10:26:24+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/sync-basalam/1.10.2/code/includes/Admin/Product/ProductDataFactory.php#L10-L20`.

```php
<?php

namespace SyncBasalam\Admin\Product;

use SyncBasalam\Admin\Product\Data\Handlers\SimpleProductHandler;
use SyncBasalam\Admin\Product\Data\Handlers\VariableProductHandler;
use SyncBasalam\Admin\Product\Data\Handlers\ProductDataHandlerInterface;
use SyncBasalam\Admin\Product\Data\Strategies\DataStrategyInterface;
use SyncBasalam\Admin\Product\Data\Strategies\CreateProductStrategy;
use SyncBasalam\Admin\Product\Data\Strategies\UpdateProductStrategy;
use SyncBasalam\Admin\Product\Data\Strategies\QuickUpdateProductStrategy;
use SyncBasalam\Admin\Product\Data\Strategies\CustomUpdateProductStrategy;

defined('ABSPATH') || exit;

class ProductDataFactory
{
    public function createHandler($product): ProductDataHandlerInterface
    {
        switch ($product->get_type()) {
            case 'simple':
                return new SimpleProductHandler();
            case 'variable':
                return new VariableProductHandler();
            default:
                return new SimpleProductHandler();
        }
    }

    public function createStrategy(string $type): DataStrategyInterface
    {
        switch ($type) {
            case 'create':
                return new CreateProductStrategy();
            case 'update':
                return new UpdateProductStrategy();
            case 'quick_update':
                return new QuickUpdateProductStrategy();
            case 'custom_update':
                return new CustomUpdateProductStrategy();
            default:
                throw new \InvalidArgumentException(esc_html("Unknown strategy type: {$type}"));
        }
    }
}

```
