Quick actions

cmd+k|ctrl+k

Navigation

Languages

Adapter Pattern Örneği

Snippet info

Language

Php

Visibility

public

Author

abdlkdrgndz

Created

2023-05-17T21:22:16.041172Z

Updated

2023-05-17T21:39:10.532034Z

<?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.
INFO