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.