Last active
April 5, 2024 05:42
-
-
Save Akash52/e98189092788ffd09d0c7d42918b3d66 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
interface Data { | |
id: number; | |
name: string; | |
} | |
// Abstraction layer representing a database | |
interface Database { | |
save(data: Data): void; | |
update(data: Data): void; | |
} | |
// High-level module depending on Database interface | |
class DataManager { | |
constructor(private database: Database) {} | |
saveData(data: Data): void { | |
this.database.save(data); | |
} | |
updateData(data: Data): void { | |
this.database.update(data); | |
} | |
} | |
// Low-level module implementing Database interface for MySQL | |
class MySQLDatabase implements Database { | |
save(data: Data): void { | |
console.log("Data saved to MySQL database"); | |
} | |
update(data: Data): void { | |
console.log("Data updated in MySQL database"); | |
} | |
} | |
// Low-level module implementing Database interface for MongoDB | |
class MongoDBDatabase implements Database { | |
save(data: Data): void { | |
console.log("Data saved to MongoDB database"); | |
} | |
update(data: Data): void { | |
console.log("Data updated in MongoDB database"); | |
} | |
} | |
// Creating an instance of MySQLDatabase (low-level module) | |
const mySQLDatabase = new MySQLDatabase(); | |
// Creating an instance of DataManager (high-level module) | |
const dataManager = new DataManager(mySQLDatabase); | |
// Using DataManager methods | |
dataManager.saveData({ id: 1, name: "John" }); | |
dataManager.updateData({ id: 1, name: "John Doe" }); | |
// Creating an instance of MongoDBDatabase (low-level module) | |
const mongoDBDatabase = new MongoDBDatabase(); | |
// Creating another instance of DataManager with MongoDBDatabase | |
const anotherDataManager = new DataManager(mongoDBDatabase); | |
// Using DataManager methods with MongoDB | |
anotherDataManager.saveData({ id: 2, name: "Alice" }); | |
anotherDataManager.updateData({ id: 2, name: "Alice Smith" }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment