EventEmitter'ı ile Uygulama: EventEmitter'ı Genişletmek
admin

İçindekiler
Bu yazıda neler var?
Node.js, JavaScript tabanlı, etkinlik odaklı bir platformdur ve bu platformda olaylar (events) merkezi bir rol oynar. Bu makalede, özel bir modül oluşturarak EventEmitter sınıfını nasıl genişleteceğimizi ele alacağız.
EventEmitter Genişletme
Node.js'in Events modülü, EventEmitter sınıfını döndürür. Bu sınıfın bir örneğini kullanarak, olayları yayabilir ve yayılan olaylara yanıt verebiliriz. Kendi modülümüzü oluşturarak, EventEmitter sınıfının üzerine inşa edebiliriz.
Özel Bir Sınıf Oluşturmak
Örneğin, bir PizzaShop sınıfı oluşturalım ve bu sınıfı EventEmitter'dan türetelim. Bunu yapmak için, öncelikle EventEmitter'ı içe aktaralım ve ardından extends anahtar kelimesini kullanarak PizzaShop sınıfını genişletelim.
const EventEmitter = require('events'); class PizzaShop extends EventEmitter { constructor() { super(); this.orderNumber = 0; } placeOrder(size, topping) { this.orderNumber++; this.emit('order', size, topping); } displayOrderNumber() { console.log(`Mevcut sipariş numarası: ${this.orderNumber}`); } }
Olaylarla Çalışmak
placeOrder metodunda, bir olay yayıyoruz (this.emit('order', size, topping)). Bu, PizzaShop sınıfının bir EventEmitter gibi davranmasını sağlar.
Olay Dinleyicilerini Eklemek
Bu sınıfı kullanarak, örneğin index.js dosyasında olay dinleyicileri ekleyebiliriz.
const PizzaShop = require('./PizzaShop'); const pizzaShop = new PizzaShop(); pizzaShop.on('order', (size, topping) => { console.log(`Sipariş alındı: ${size} pizza, ${topping} ile.`); }); pizzaShop.placeOrder('büyük', 'mantar'); pizzaShop.displayOrderNumber();
Ek Modüllerle İş Birliği Yapmak
Ayrıca, başka bir modül oluşturarak (örneğin, DrinkMachine) bu olaylara yanıt verebiliriz. Bu, modüller arasındaki sıkı bağlantıyı azaltarak, daha modüler ve bakımı kolay kod yazmamıza olanak tanır.
// DrinkMachine.js class DrinkMachine { serveDrink(size) { if (size === 'büyük') { console.log('Ücretsiz içecek servisi yapıldı.'); } } } module.exports = DrinkMachine;
Index.js'de bu modülü kullanarak, order olayına ek yanıtlar ekleyebiliriz:
const DrinkMachine = require('./DrinkMachine'); const drinkMachine = new DrinkMachine(); pizzaShop.on('order', (size, topping) => { drinkMachine.serveDrink(size); });
Özet
Bu makalede, EventEmitter sınıfını genişleterek özel bir modül oluşturmanın temellerini ele aldık. Ana noktalar şunlardır:
- EventEmitter sınıfını genişleterek kendi özel modüllerimizi oluşturabiliriz.
- Bu yaklaşım, event tabanlı mimariyi kullanarak modüler ve bakımı kolay uygulamalar geliştirmemize olanak tanır.
- Kendi eventlerimizi yayabilir ve bu olaylara çeşitli şekillerde yanıt verebiliriz.






