What are the advantages and disadvantages of using a factory method approach in PHP for initializing installation processes, especially in the context of extensibility and modularity?

When initializing installation processes in PHP, using a factory method approach can provide advantages such as improved extensibility and modularity. By encapsulating the creation of objects within a factory method, you can easily add new installation processes without modifying existing code. However, a potential disadvantage is increased complexity, as managing multiple factory methods and classes can become cumbersome.

<?php
// Factory method approach for initializing installation processes

interface InstallationProcess {
    public function run();
}

class DatabaseInstallationProcess implements InstallationProcess {
    public function run() {
        // Logic for database installation
    }
}

class FileInstallationProcess implements InstallationProcess {
    public function run() {
        // Logic for file installation
    }
}

class InstallationProcessFactory {
    public static function createInstallationProcess($type) {
        switch($type) {
            case 'database':
                return new DatabaseInstallationProcess();
            case 'file':
                return new FileInstallationProcess();
            default:
                throw new Exception("Invalid installation process type");
        }
    }
}

// Example usage
$databaseProcess = InstallationProcessFactory::createInstallationProcess('database');
$databaseProcess->run();

$fileProcess = InstallationProcessFactory::createInstallationProcess('file');
$fileProcess->run();
?>