13
13
*/
14
14
15
15
class StockOffer {
16
- private stockShares : number = 0 ;
17
- private stockSymbol : string = "" ;
18
- private colleagueCode : number = 0 ;
19
-
20
16
public constructor (
21
- stockShares : number ,
22
- stockSymbol : string ,
23
- colleagueCode : number
24
- ) {
25
- this . stockShares = stockShares ;
26
- this . stockSymbol = stockSymbol ;
27
- this . colleagueCode = colleagueCode ;
28
- }
29
-
30
- public getStockShares ( ) : number {
31
- return this . stockShares ;
32
- }
33
-
34
- public getStockSymbol ( ) : string {
35
- return this . stockSymbol ;
36
- }
37
-
38
- public getColleagueCode ( ) : number {
39
- return this . colleagueCode ;
40
- }
17
+ readonly stockShares : number ,
18
+ readonly stockSymbol : string ,
19
+ readonly colleagueCode : number
20
+ ) { }
41
21
}
42
22
43
23
abstract class Colleague {
44
- private mediator : Mediator ;
45
- private colleagueCode : number ;
24
+ private colleagueCode : number = - 1 ;
46
25
47
- public constructor ( mediator : Mediator ) {
48
- this . mediator = mediator ;
49
- this . mediator . addColleague ( this ) ;
26
+ public constructor ( private readonly mediator : Mediator ) {
27
+ mediator . addColleague ( this ) ;
50
28
}
51
29
52
30
public saleOffer ( stock : string , shares : number ) : void {
@@ -83,27 +61,16 @@ interface Mediator {
83
61
}
84
62
85
63
class StockMediator implements Mediator {
86
- private colleagues : { [ key : number ] : Colleague } ;
87
- private stockBuyOffers : Array < StockOffer > ;
88
- private stockSaleOffers : Array < StockOffer > ;
89
-
90
64
private colleagueCode : number = 0 ;
91
-
92
- public constructor ( ) {
93
- this . colleagueCode = 0 ;
94
- this . colleagues = { } ;
95
- this . stockBuyOffers = [ ] ;
96
- this . stockSaleOffers = [ ] ;
97
- }
65
+ private colleagues : Record < number , Colleague > = { } ;
66
+ private stockBuyOffers : StockOffer [ ] = [ ] ;
67
+ private stockSaleOffers : StockOffer [ ] = [ ] ;
98
68
99
69
saleOffer ( stock : string , shares : number , colleagueCode : number ) : void {
100
70
let stockSold : boolean = false ;
101
71
102
72
for ( let offer of this . stockBuyOffers ) {
103
- if (
104
- offer . getStockSymbol ( ) === "stock" &&
105
- offer . getStockShares ( ) === shares
106
- ) {
73
+ if ( offer . stockSymbol === "stock" && offer . stockShares === shares ) {
107
74
console . log (
108
75
`${ shares } shares of ${ stock } sold to colleague code ${ colleagueCode } `
109
76
) ;
@@ -124,10 +91,7 @@ class StockMediator implements Mediator {
124
91
let stockBought : boolean = false ;
125
92
126
93
for ( let offer of this . stockSaleOffers ) {
127
- if (
128
- offer . getStockSymbol ( ) === stock &&
129
- offer . getStockShares ( ) === shares
130
- ) {
94
+ if ( offer . stockSymbol === stock && offer . stockShares === shares ) {
131
95
console . log (
132
96
`${ shares } shares of ${ stock } bought by colleague code ${ colleagueCode } `
133
97
) ;
@@ -154,12 +118,12 @@ class StockMediator implements Mediator {
154
118
getStockOfferings ( ) : void {
155
119
console . log ( "Stocks for sale" ) ;
156
120
for ( let offer of this . stockSaleOffers ) {
157
- console . log ( `\t- ${ offer . getStockShares ( ) } of ${ offer . getStockSymbol ( ) } ` ) ;
121
+ console . log ( `\t- ${ offer . stockShares } of ${ offer . stockSymbol } ` ) ;
158
122
}
159
123
160
124
console . log ( "Stocks buy offers:" ) ;
161
125
for ( let offer of this . stockBuyOffers ) {
162
- console . log ( `\t- ${ offer . getStockShares ( ) } of ${ offer . getStockSymbol ( ) } ` ) ;
126
+ console . log ( `\t- ${ offer . stockShares } of ${ offer . stockSymbol } ` ) ;
163
127
}
164
128
}
165
129
}
0 commit comments