File tree Expand file tree Collapse file tree 7 files changed +79
-1
lines changed
Expand file tree Collapse file tree 7 files changed +79
-1
lines changed Original file line number Diff line number Diff line change 1+ class Follower {
2+ update ( data ) {
3+ console . log ( `Awwnnn... You're ${ data } <3` ) ;
4+ }
5+ }
6+ export default Follower ;
Original file line number Diff line number Diff line change 1+ class Hater {
2+ update ( data ) {
3+ console . log ( `Argh! Bad thing. You're ${ data } ? Shame!` ) ;
4+ }
5+ }
6+ export default Hater ;
Original file line number Diff line number Diff line change 1+ class Observable {
2+
3+ constructor ( ) {
4+ this . _listeners = [ ] ;
5+ }
6+
7+ subscribe ( subscriber ) {
8+ this . _listeners . push ( subscriber ) ;
9+ }
10+
11+ unsubscribe ( unsubscriber ) {
12+ this . _listeners = this . _listeners . filter ( ( listener ) => listener !== unsubscriber ) ;
13+ }
14+
15+ notify ( data ) {
16+ this . _listeners . forEach ( listener => listener . update ( data ) ) ;
17+ }
18+ }
19+
20+ export default Observable ;
Original file line number Diff line number Diff line change 1+ class Stalker {
2+ update ( data ) {
3+ console . log ( `Hmm... I'm looking you ${ data } ...` ) ;
4+ }
5+ }
6+ export default Stalker ;
Original file line number Diff line number Diff line change 1+ import Observable from './Observable' ;
2+ class User extends Observable {
3+
4+ constructor ( ) {
5+ super ( ) ;
6+ }
7+
8+ doSomething ( data ) {
9+ console . log ( `I'm ${ data } ` ) ;
10+ this . notify ( data ) ;
11+ }
12+ }
13+ export default User ;
Original file line number Diff line number Diff line change 1+ import User from './User' ;
2+ import Follower from './Follower' ;
3+ import Stalker from './Stalker' ;
4+ import Hater from './Hater' ;
5+
6+ console . log ( 'Creating a user and some other profiles' ) ;
7+ const user = new User ( ) ;
8+ const fan = new Follower ( ) ;
9+ const stalker = new Stalker ( ) ;
10+ const hater = new Hater ( ) ;
11+
12+ console . log ( 'Some people starts to following our star!' ) ;
13+ user . subscribe ( fan ) ;
14+ user . subscribe ( stalker ) ;
15+ user . subscribe ( hater ) ;
16+
17+ console . log ( 'Our star starts to act! Let\'s see what happens...' ) ;
18+
19+ user . doSomething ( 'walking on the street' ) ;
20+ user . doSomething ( 'running on the street' ) ;
21+ user . doSomething ( 'smiling to everyone!' ) ;
22+
23+ console . log ( 'Our start finally managed to mislead the hater' ) ;
24+ user . unsubscribe ( hater ) ;
25+
26+ user . doSomething ( 'Acting normally with no worries' ) ;
Original file line number Diff line number Diff line change 44 "sucrase" : " ^3.10.1"
55 },
66 "scripts" : {
7- "strategy" : " nodemon strategy/main.js"
7+ "strategy" : " nodemon strategy/main.js" ,
8+ "observer" : " nodemon observer/main.js"
89 },
910 "name" : " design_patterns" ,
1011 "version" : " 1.0.0" ,
You can’t perform that action at this time.
0 commit comments