"Enter"a basıp içeriğe geçin

Adapter Design Pattern

Adapter Design Pattern: Bir sınıfın arayüzünü, beklenen bir arayüze çevirir. Farklı arayüzlere sahip sınıfların birlikte çalışmasını sağlar. Örnek verecek olursak;

public interface Database {

    void select(String data);

    void insert(String data);

    void update(String data);

    void delete(String data);
}
public class SqlDatabase implements Database{
    @Override
    public void select(String data) {
        System.out.println("Selecting data from SQL database with query : "+ data);
    }

    @Override
    public void insert(String data) {
        System.out.println("Inserting data into SQL database : "+ data);
    }

    @Override
    public void update(String data) {
        System.out.println("Updating data in SQL database : "+ data);
    }

    @Override
    public void delete(String data) {
        System.out.println("Deleting data from SQL database : "+ data);
    }
}
public class MongoDatabase {
    public void findDocument(String jsonQuery) {
        System.out.println("Finding document in MongoDB with query: " + jsonQuery);
    }

    public void insertDocument(String json) {
        System.out.println("Inserting document into MongoDB: " + json);
    }

    public void updateDocument(String json) {
        System.out.println("Updating document in MongoDB:" + json);
    }

    public void deleteDocument(String json) {
        System.out.println("Deleting document from MongoDB:" + json);
    }
}
public class MongoToSqlAdapter implements Database {

    private MongoDatabase mongoDatabase;

    public MongoToSqlAdapter(MongoDatabase mongoDatabase) {
        this.mongoDatabase = mongoDatabase;
    }

    @Override
    public void select(String data) {
        mongoDatabase.findDocument(data);
    }

    @Override
    public void insert(String data) {
        mongoDatabase.insertDocument(data);
    }

    @Override
    public void update(String data) {
        mongoDatabase.updateDocument(data);
    }

    @Override
    public void delete(String data) {
        mongoDatabase.deleteDocument(data);
    }
}
  public static void main(String[] args) {
        // SQL database operation
        Database sqlDatabase = new SqlDatabase();
        sqlDatabase.insert("SqlDatabase Data");
        sqlDatabase.update("SqlDatabase Data");
        sqlDatabase.delete("SqlDatabase Data");
        sqlDatabase.select("SELECT * FROM SqlDatabase Table");

        // MongoDB database operation
        MongoDatabase mongoDatabase = new MongoDatabase();
        Database mongoToSqlAdapter = new MongoToSqlAdapter(mongoDatabase);
        mongoToSqlAdapter.insert("Mongo Data");
        mongoToSqlAdapter.update("Mongo Data");
        mongoToSqlAdapter.delete("Mongo Data");
        mongoToSqlAdapter.select("SELECT * FROM mongoTable");
   }

Örnekte, MongoToSqlAdapter sınıfı, MongoDatabase sınıfını Database arayüzüne uyarlayarak MongoDB’nin SQL veritabanı gibi kullanılmasını sağlıyor. Bu sayede, her iki database türüyle uyumlu hale gelmiş oluyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir