<?php
interface DatabaseInterface
{
public function connect();
public function query($sql);
}
class MySQLDatabase implements DatabaseInterface
{
public function connect()
{
echo "MySQLDatabase: Connected to MySQL database.\n";
}
public function query($sql)
{
echo "MySQLDatabase: Executing query: $sql\n";
}
}
class PostgreSQLDatabase
{
public function establishConnection()
{
echo "PostgreSQLDatabase: Connected to PostgreSQL database.\n";
}
public function executeQuery($sql)
{
echo "PostgreSQLDatabase: Executing query: $sql\n";
}
}
class DatabaseAdapter implements DatabaseInterface
{
private $postgreSQLDatabase;
public function __construct(PostgreSQLDatabase $postgreSQLDatabase)
{
$this->postgreSQLDatabase = $postgreSQLDatabase;
}
public function connect()
{
$this->postgreSQLDatabase->establishConnection();
}
public function query($sql)
{
$this->postgreSQLDatabase->executeQuery($sql);
}
}
// Kullanım
$mysqlDatabase = new MySQLDatabase();
$adapter = new DatabaseAdapter(new PostgreSQLDatabase());
$mysqlDatabase->connect();
$mysqlDatabase->query("SELECT * FROM users");
$adapter->connect();
$adapter->query("SELECT * FROM users");
// MySQLDatabase ve PostgreSQLDatabase sınıfları farklı arayüzlere sahiptir.
// DatabaseAdapter sınıfı, DatabaseInterface arayüzünü uygulayarak PostgreSQLDatabase sınıfının arayüzünü taklit eder.
// Böylece DatabaseAdapter sınıfı, mevcut MySQLDatabase sınıfının yerine geçebilir ve istemci kodu değiştirmeden yeni veritabanı sınıfını kullanabilir.