Bridge模式,将抽象部分和它的实现部分分离,使它们都可以独立的变化。
// base
class SqlDriver {
public:
virtual void Method();
}
// mysql
class MysqlDriver: public SqlDriver {
public:
virtual void Method();
};
// sqlserver
class SqlServerDriver: public SqlDriver {
public:
virtual void Method();
};
// oracle
class OracleDriver: public SqlDriver {
public:
virtual void Method();
};
// bridge
class SqlManager {
public:
void SetSqlDriver(SqlDriver* driver);
SqlDriver* GetSqlDriver();
void Method();
private:
SqlDriver* driver;
}
void SqlManager::SetSqlDriver(SqlDriver* driver) {
this->driver = driver;
}
SqlDriver* SqlManager::GetSqlDriver() {
return this->driver;
}
void SqlManager::Method() {
this->driver->Method();
}
// test
void Test() {
SqlDriver* sqlDriver = new MysqlDriver();
SqlManager* sql = new SqlManager();
sql->SetSqlDriver(sqlDriver);
sql->Method();
// todo ... destroy
}
PS. 我的设计模式系列blog, 《设计模式》专栏,通过简单的示例演示设计模式,对于初学者很容易理解入门。深入学习请看GoF的《设计模式》。