Оё шумо бо намунаи тарҳрезии Facade шинос ҳастед? Таҷрибаи истифодаи онро нақл кунед.
sobes.tech AI
Ҷавоб аз AI
Бале, ман бо паттерни тарҳи Facade шинос ҳастам. Ин як паттерни сохторӣ аст, ки интерфейи ягона ва умумиро ба системаи мураккаби кластаро таъмин мекунад. Ҳадафи он содда кардани истифодаи системаи зерсохт бо пинҳон кардани мураккабии он аз муштарӣ мебошад.
Ман таҷрибаи истифодаи паттерни Facade-ро, масалан, дар кор бо архитектураи бисёрқабатаи барнома дорам. Бигзор, модул барои кор бо шабака ва базаи додаҳо бошад. Ҷои он, ки код барои муштарӣ мустақиман бо синфҳои қабати шабака (Retrofit, OkHttp), парсерҳо, синфҳои базаи додаҳо (Room, DAO) муошират кунад, як синфи фасада сохта шудааст. Ин фасада методҳои соддае, масалан getUser(userId) ё saveUser(user), пешниҳод мекунад, ки дар дохили худ ҳамоҳангӣ бо системаҳоро анҷом медиҳанд: дархости шабакавӣ, парс кардани маълумот, нигоҳ доштани он дар база.
Манфиатҳои чунин усул:
- Содда кардани коди муштарӣ: Муштарӣ набояд дар бораи сохтори дохилии системаи зер маълумот дошта бошад.
- Кам кардани вобастагиҳо: Фасада муштариро аз иҷрои мустақим бо системаи зер ҷудо мекунад, ки ин осонтар мекунад иваз кардани он.
- Беҳтар кардани сохторӣ: Системаи зер назоратшаванда ва фаҳманда мешавад.
Масалан, дар зерсохтани фасадаи соддашуда:
// Системаи кор бо API
class ApiService {
fun getUserFromApi(userId: Int): String {
// Логикаи дархости шабакавӣ
return "{\"id\":$userId, \"name\":\"John Doe\"}"
}
}
// Системаи кор бо база
class DatabaseService {
fun saveUserToDb(userJson: String) {
// Логикаи нигоҳдорӣ дар база
}
fun getUserFromDb(userId: Int): String {
// Логикаи гирифтани маълумот аз база
return "" // Ҷойгузин
}
}
// Фасада
class UserFacade(
private val apiService: ApiService,
private val databaseService: DatabaseService
) {
fun getUser(userId: Int): String {
// Аввал кӯшиш мекунем аз база гирифтан
val userFromDb = databaseService.getUserFromDb(userId)
if (userFromDb.isNotEmpty()) {
return userFromDb
}
// Агар дар база набошад, аз API мегирем
val userFromApi = apiService.getUserFromApi(userId)
// Меҳмоннависӣ мекунем дар база барои кешинг
databaseService.saveUserToDb(userFromApi)
return userFromApi
}
}
// Мисоли истифодаи фасада дар код
fun main() {
val apiService = ApiService()
val databaseService = DatabaseService()
val userFacade = UserFacade(apiService, databaseService)
val userJson = userFacade.getUser(123)
println(userJson)
}
Дар ин мисол, UserFacade тафсилоти гирифтани маълумоти корбар аз API ва нигоҳдории он дар базаҳоро пинҳон мекунад, ва ба коди муштарӣ методи содда getUser пешниҳод мекунад. Муштарӣ назар надорад дар бораи вуҷуд доштани ApiService ва DatabaseService.
Инчунин, фасада кӯмак мекунад, ки коди тоза, фаҳмошаванда ва осон ба нигоҳдории хуб дошта шавад, махсусан дар кор бо модулҳои мураккаб.