Hirdetés
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- bambano: Bambanő háza tája
- sziku69: Fűzzük össze a szavakat :)
- hege8888: Retro Kocka Kuckó harmadjára Hódmezővásárhelyen
- Luck Dragon: Asszociációs játék. :)
- Geri Bátyó: Agglegénykonyha 10 – Alapanyagok/készételek többféle felhasználása
- Jhonny06: Új gépsárkány
- laca223: Miért győz a kollektív meggyőződés akkor is, ha saját magát teszi tönkre?
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
-
LOGOUT

Új hozzászólás Aktív témák
-
bandi0000
nagyúr
válasz
bandi0000
#19758
üzenetére
Szóval a példa amit kértetek kb így nézne ki:
Egyszerűség kevéért tegyük fel, hogy ez egy Logolós funkció lesz, vár egy string-et,amit tekinthetünk egy TAG-nek, és egy Map-et, amibe bármit belerakunk nyilván egy String lesz a végén
Szóval valahogy így néz ki:
Kotlinba írodott a csoda példám, de talán érthetőTalán már az interactorig értem is így, hogy miért kellett, jó sok mindent lehagytam, szóval tételezhetjük fel, hogy az jó, de ami sötét nekem, hogy miben segít az interactor alatti rész, ugyanis anélkül, hogy a konkrét felhasználáskor ezt csinálnám:
val data = SpecificSecondScreenData()data.name = "Tag"SecondScreenLoggerImpl().log(data)Csinálhatnám szimplán ezt:
PerfLogInteractor().logSecondScreenLogs("TAG",mapOf())interface ILogger{
fun logFirstScreenLogs(name: String, list: List<Any>)
fun logSecondScreenLogs(name: String, attrs: Map<String, Any>)
}
class LoggerImpl(): ILogger{
//Itt azért sok egyéb dolog van, de a lényegi része ennyi:
override fun logFirstScreenLogs(name: String, list: List<Any>) {
ThirdPartyLogger.getInstance().Log(name, list)
}
override fun logSecondScreenLogs(name: String, attrs: Map<String, Any>) {
ThirdPartyLogger.getInstance().Log(name, attrs)
}
}
class PerfLogHelper(){
private val Logger = LoggerImpl()
fun getInstance() = PerfLogHelper()
fun logFirstScreenLogs(name: String, list: List<Any>){
Logger.logFirstScreenLogs(name,list)
}
fun logSecondScreenLogs(name: String, attrs: Map<String, Any>){
Logger.logSecondScreenLogs(name,attrs)
}
}
//Ez a kettő multi modul miatt kell
interface IPerfLogInteractor{
fun logFirstScreenLogs(name: String, list: List<Any>)
fun logSecondScreenLogs(name: String, attrs: Map<String, Any>)
}
class PerfLogInteractor(): IPerfLogInteractor{
override fun logFirstScreenLogs(name: String, list: List<Any>) {
PerfLogHelper.getInstance().logFirstScreenLogs(name,list)
}
override fun logSecondScreenLogs(name: String, attrs: Map<String, Any>) {
PerfLogHelper.getInstance().logFirstScreenLogs(name,attrs)
}
}class SpecificSecondScreenData(): ISecondScreenData{override var name: String = "TAG"override fun getAttrs(): Map<String, Any> {return mapOf()}}
interface ISecondScreenData{
var name: String
fun getAttrs(): Map<String,Any>
}
interface ISecondScreenLogger{
fun log(data: ISecondScreenData)
}
class SecondScreenLoggerImpl(): ISecondScreenLogger{
val interactor: IPerfLogInteractor = PerfLogInteractor()
override fun log(data: ISecondScreenData) {
interactor.logSecondScreenLogs(data.name,data.getAttrs())
}
}
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Asus RGB gamer pc Z790 i5/i7/i9 13600k 32GB DDR5 6400MHz nvidia RTX 5050 + garancia
- BESZÁMÍTÁS! Samsung S27D850T 27 75Hz PLS QHD 5ms monitor garanciával hibátlan működéssel
- BESZÁMÍTÁS! Asus VG27AQL3A 27 180Hz IPS QHD 1ms monitor garanciával hibátlan működéssel
- Lexar Ares RGB 32GB (2x16GB) DDR5 6000MHz CL28 - Élettartam garancia
- HP E2620 J9626A-48port - Managed switch
- Lenovo Thinkbook 16 G6 WUXGA IPS Ryzen7 7730U 16GB 512GB SSD Radeon RX Vega8 Win11 Pro Garancia
- 170 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4090
- BESZÁMÍTÁS! MSI B450M R5 5600X 32GB DDR4 512GB SSD RTX 3080 10GB ZALMAN Z1 Plus Cooler Master 750W
- HP Thunderbolt-dokkoló, 120W G4 (4J0A2AA)
- Dell Latitude E7470. Olcsó üzleti kategóriás laptop! Új akkumulátor!
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi


