File tree 2 files changed +66
-0
lines changed
behavioral/template-method
2 files changed +66
-0
lines changed Original file line number Diff line number Diff line change
1
+ import { LoggerTemplate , EmailLogger , FileLogger } from "./Templates" ;
2
+
3
+ export default class TemplateEx {
4
+
5
+ logger1 : LoggerTemplate ;
6
+ logger2 : LoggerTemplate ;
7
+
8
+ constructor ( ) {
9
+
10
+ this . logger1 = new EmailLogger ( "john@doe.com" , "error" ) ;
11
+ this . logger2 = new FileLogger ( "/logs/app.log" , "debug" ) ;
12
+ this . run ( false ) ;
13
+ this . run ( true ) ;
14
+ }
15
+
16
+ run ( runningInContainer : boolean ) : void {
17
+
18
+ console . log ( "---" ) ;
19
+ if ( runningInContainer ) {
20
+ this . logger1 . log ( "[FATAL] App crashed" ) ;
21
+ }
22
+ else {
23
+ this . logger2 . log ( "[INFO] App started" ) ;
24
+ this . logger2 . log ( "[FATAL] App crashed" ) ;
25
+ }
26
+
27
+ }
28
+ }
Original file line number Diff line number Diff line change
1
+ export abstract class LoggerTemplate {
2
+
3
+ loglevel : string ;
4
+
5
+ constructor ( _loglevel : string ) {
6
+ this . loglevel = _loglevel ;
7
+ }
8
+
9
+ abstract log ( message : string ) : void ;
10
+ }
11
+
12
+ export class FileLogger extends LoggerTemplate {
13
+
14
+ private path : string ;
15
+
16
+ constructor ( _path : string , _loglevel : string ) {
17
+ super ( _loglevel ) ;
18
+ this . path = _path ;
19
+ }
20
+
21
+ log ( message : string ) : void {
22
+ console . log ( `Message '${ message } ' written to ${ this . path } ` ) ;
23
+ }
24
+ }
25
+
26
+ export class EmailLogger extends LoggerTemplate {
27
+
28
+ private email : string ;
29
+
30
+ constructor ( _email : string , _loglevel : string ) {
31
+ super ( _loglevel ) ;
32
+ this . email = _email ;
33
+ }
34
+
35
+ log ( message : string ) : void {
36
+ console . log ( `Message '${ message } ' sent to ${ this . email } ` ) ;
37
+ }
38
+ }
You can’t perform that action at this time.
0 commit comments