Middle
Have you used the Facade pattern in your projects?
sobes.tech AI
Answer from AI
Yes, I have used it. Facade provides a simple and unified interface to a complex subsystem.
Example of usage:
Creating a unified interface for working with different data sources (e.g., local database, network API).
// Interface for data operations
interface IDataService {
fun getData(): String
}
// Implementation for local database
class LocalDatabaseService : IDataService {
override fun getData(): String {
// Logic for fetching data from local database
return "Data from local database"
}
}
// Implementation for network API
class NetworkApiService : IDataService {
override fun getData(): String {
// Logic for fetching data from network API
return "Data from network API"
}
}
// Facade providing a unified interface
class DataFacade {
private val localService = LocalDatabaseService()
private val networkService = NetworkApiService()
fun fetchData(): String {
// Example logic for choosing data source
return if (/* condition for choosing source */ true) {
localService.getData()
} else {
networkService.getData()
}
}
}
Using Facade simplifies client interaction with multiple subsystem classes, hiding its complexity. This enhances usability and reduces client dependency on specific implementations within the subsystem.