Adapter Pattern Örneği
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
<?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.
Php
INFO