-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathobserver.js
59 lines (51 loc) · 1.58 KB
/
observer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
* Observer deseni, bir nesnenin durumu değiştiğinde bağımlı olan diğer nesnelere otomatik olarak bildirim göndermek ve güncellenmeleri sağlamak için kullanılan bir tasarım desenidir.
*/
// Gözlemleyen (Observer) sınıfı
class Logger {
constructor() {
this.log = function(message) {
console.log(`[LOG]: ${message}`);
};
}
}
// Gözlemlenen (Subject) sınıfı
class UserManager {
constructor() {
this.observers = [];
this.registerObserver = function(observer) {
this.observers.push(observer);
};
this.unregisterObserver = function(observer) {
const index = this.observers.indexOf(observer);
if (index > -1) {
this.observers.splice(index, 1);
}
};
this.notifyObservers = function(message) {
this.observers.forEach(function(observer) {
observer.log(message);
});
};
this.createUser = function(user) {
// Kullanıcı oluşturma işlemleri
// Loglama yapılıyor
this.notifyObservers(`Yeni kullanıcı oluşturuldu: ${user}`);
};
}
}
// Örnek kullanım
const logger = new Logger();
const userManager = new UserManager();
userManager.registerObserver(logger);
userManager.createUser("John Doe");
// Çıktı: [LOG]: Yeni kullanıcı oluşturuldu: John Doe
/**
Nesneler arasında gevşek bağlantı sağlar.
Gerçek zamanlı bildirimler ve güncellemeler sağlar.
Modülerlik ve yeniden kullanılabilirlik sunar.
Olay tabanlı programlamayı destekler.
Merkezi bir kontrol noktası sağlar.
Genişletilebilirlik sağlar.
Test edilebilirlik kolaylığı sağlar.
*/