PHP开始掌握策略模式

时间:2016-10-31 01:35:02

标签: php oop

我想知道是否有人可以帮助我。

我正在研究战略模式,但我遇到了一些问题。

作为一个例子,我将描述一个数据库备份方案。

首先我创建一个界面

interface DatabaseBackup {
    public function getConnection()
}

然后我创建我将使用的策略

class DatabaseBackupStrategy {
    private $strategy = NULL;

    public function __construct($service) {

        switch ($service) {
            case "mysql":
                $this->strategy = new MYSQLBackup();
                break;
            case "mssql":
                $this->strategy = new MSSQLBackup();
                break;
        }

    }

    public function getConnection()
    {
        return $this->strategy->testConnection();
    }
}

接下来的实施

class MYSQLBackup implements DatabaseBackup {
    public function getConnection() {
        \\ Code here
    }
}

class MSSQLBackup implements DatabaseBackup {
    public function getConnection() {
        \\ Code here
    }
}

最后,称之为

    $service = new DatabaseBackupStrategy($service);
    $service->getConnection();

以上是我对其运作方式的理解。

但是,如果我想在MYSQLBackup或MSSQLBackup类中实现方法,我也必须在DatbaseBackupStrategy类中定义它。

这是最好的方式吗?

我觉得我要加倍代码必须首先在界面中定义方法,然后是策略,最后在实现中。

0 个答案:

没有答案