-
Fototrend
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Pala
veterán
Sziasztok!
Akad itt valaki, aki object composition (és ezzel kapcsolatos patternek, best practice-ek) terén otthonosabban mozog.Szinte bárhol olvasok a témáról, általában a lentihez hasonló példákkal illusztrálják, hogyan is néz ez ki a gyakorlatban (ez nem az én kódom, csak példa):
const canCast = (state) => ({
cast: (spell) => {
console.log(`${state.name} casts ${spell}!`);
state.mana--;
}
})
const canFight = (state) => ({
fight: () => {
console.log(`${state.name} slashes at the foe!`);
state.stamina--;
}
})
const fighter = (name) => {
let state = {
name,
health: 100,
stamina: 100
}
return Object.assign(state, canFight(state));
}
const mage = (name) => {
let state = {
name,
health: 100,
mana: 100
}
return Object.assign(state, canCast(state));
}
scorcher = mage('Scorcher')
scorcher.cast('fireball'); // Scorcher casts fireball!
console.log(scorcher.mana) // 99
slasher = fighter('Slasher')
slasher.fight(); // Slasher slashes at the foe!
console.log(slasher.stamina) // 99Namármost, nekem ezzel az a problémám, hogy a kompozíció során minden egyes object instance új példányt kap ugyanabból a metódusból is, tehát tkp. elkezdjük szépen teleszemetelni a memóriát, kvázi feleslegesen. Kérdés, hogy:
1. El tudjuk-e ezt kerülni úgy, hogy a fenti kódban a canCast és canFight továbbra is pure function-ök maradjanak (mondjuk most a bennük lévő console.log miatt nem azok, de azt most gondolatban vegyük ki
)!? (Pusztán azt elérni, hogy egy metóduson osztozzanak az instance-ek, nem nehéz.)Épp most írok egy játékot, ahol object compositiont használok, százas nagyságrendben készülnek majd objektumok, és nem találtam igazán szép megoldást erre a problémára.
Új hozzászólás Aktív témák
- Nem engedi el a 128 GB-ot a Google
- AMD Navi Radeon™ RX 9xxx sorozat
- Milyen alaplapot vegyek?
- Philips LCD és LED TV-k
- Apple iPhone 13 mini - miért nem veszik elegen?
- ASUS notebook topic
- Arc Raiders
- Apple Watch Sport - ez is csak egy okosóra
- Nem elég a RAM-ok, NAND-ok és VGA-k áremelkedése
- Torrent meghívó kunyeráló
- További aktív témák...
- Eladó Konfig I5 7400 16GB DDR4 240GB SSD 512GB HDD GTX1660TI 6GB!
- ÚJ Glorious PC Gaming Race Model WIred O illetve I Bolti ár:14k INGYEN FOXPOST
- ÚJ Glorious PC Gaming Race Model I 2 Wireless Bolti ár:40k INGYEN FOXPOST
- ÚJ Glorious PC Gaming Race Model D/D- USB Bolti ár:10k INGYEN FOXPOST
- ÚJ Glorious Model O 2 Wireless Bolti ár:40k INGYEN FOXPOST
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- Önerő nélkül is elvihető! Részletfizetés. 27 % Áfás számlával Dell Alienware QD-OLED gamer monitor
- Beszámítás! Acer Nitro 5 AN515-58-75F8 Gamer notebook - i7 12700H 16GB DDR4 512GB SSD RTX 3060 6GB
- Apple iPhone 11 Pro Max 64GB,Átlagos,Adatkabel,12 hónap garanciával
- Dell Precision 7560 Workstation i7-11850H 32GB RAM 1TB SSD Nvidia RTX A3000 6GB 1 év garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest
Akad itt valaki, aki object composition (és ezzel kapcsolatos patternek, best practice-ek) terén otthonosabban mozog.
