-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnewsletter.js
88 lines (75 loc) · 2.26 KB
/
newsletter.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// Subscriber class
class Subscriber{
constructor(name,emailAddress,age){
this.name=name;
this.emailAddress=emailAddress;
this.age=age
}
}
// Message class
class Message{
constructor(content, minimumAge=13){
this.content=content;
this.minimumAge=minimumAge;
}
}
// Send email function
const sendEmail=(emailAddress,messageContent)=>{
console.log(messageContent);
}
// Newsletter system class
class NewsletterSytem{
constructor(sendEmail){
this.sendEmail=sendEmail
this.subscribers=new Set()
}
subscribe(subscriber){
if(this.subscribers.has(subscriber)){
return;
}
this.subscribers.add(subscriber);
}
unsubscribe(subscriber){
this.subscribers.delete(subscriber);
}
sendNewsletter(message){
if(this.subscribers.size==0){
return;
}
for(let sub of this.subscribers){
if(sub.age>=13){
let personalizemessage=`Hello ${sub.name} ${message.content}`
sendEmail(sub.emailAddress, personalizemessage);
}
}
}
}
// const john=new Subscriber("John","[email protected]", 10);
// const kerry=new Subscriber("Kerry","[email protected]",22);
// const naj=new Subscriber("Naj","[email protected]",20)
// const dennis=new Subscriber("Dennis","[email protected]",28)
// const luke=new Subscriber("Luke","[email protected]",16)
// const leia=new Subscriber("Leia", "[email protected]",16)
// const eric=new Subscriber("eric","[email protected]",12)
// let newslettersystem=new NewsletterSytem(sendEmail)
// newslettersystem.subscribe(john)
// newslettersystem.subscribe(kerry)
// newslettersystem.subscribe(naj)
// newslettersystem.subscribe(dennis)
// newslettersystem.subscribe(luke)
// newslettersystem.subscribe(leia)
// newslettersystem.subscribe(eric)
// const invitation=new Message("Come and join our conference")
// const loanAd=new Message("We have the best loan",21)
// newslettersystem.sendNewsletter(invitation)
// console.log("********************************new message***********************************");
// newslettersystem.sendNewsletter(loanAd)
// class Demo{
// constructor(){
// this.message="Hello programmer"
// this.farmers=new Set()
// }
// }
// let mes=new Demo()
// mes.farmers.add(kerry)
// console.log(mes.farmers)