File tree Expand file tree Collapse file tree 5 files changed +94
-0
lines changed
src/main/java/com/mayaha/dp/cor Expand file tree Collapse file tree 5 files changed +94
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .mayaha .dp .cor ;
2
+
3
+ public abstract class AbstractLogger {
4
+ public static int INFO = 1 ;
5
+ public static int DEBUG = 2 ;
6
+ public static int ERROR = 3 ;
7
+
8
+ protected int level ;
9
+
10
+ //责任链中的下一个元素
11
+ protected AbstractLogger nextLogger ;
12
+
13
+ public void setNextLogger (AbstractLogger nextLogger ){
14
+ this .nextLogger = nextLogger ;
15
+ }
16
+
17
+ public void logMessage (int level , String message ){
18
+ if (this .level <= level ){
19
+ write (message );
20
+ }
21
+ if (nextLogger !=null ){
22
+ nextLogger .logMessage (level , message );
23
+ }
24
+ }
25
+
26
+ abstract protected void write (String message );
27
+
28
+ }
Original file line number Diff line number Diff line change
1
+ package com .mayaha .dp .cor ;
2
+
3
+ public class ConsoleLogger extends AbstractLogger {
4
+
5
+ public ConsoleLogger (int level ){
6
+ this .level = level ;
7
+ }
8
+
9
+ @ Override
10
+ protected void write (String message ) {
11
+ System .out .println ("Standard Console::Logger: " + message );
12
+ }
13
+ }
Original file line number Diff line number Diff line change
1
+ package com .mayaha .dp .cor ;
2
+
3
+ public class ErrorLogger extends AbstractLogger {
4
+
5
+ public ErrorLogger (int level ){
6
+ this .level = level ;
7
+ }
8
+
9
+ @ Override
10
+ protected void write (String message ) {
11
+ System .out .println ("Error Console::Logger: " + message );
12
+ }
13
+ }
Original file line number Diff line number Diff line change
1
+ package com .mayaha .dp .cor ;
2
+
3
+ public class FileLogger extends AbstractLogger {
4
+
5
+ public FileLogger (int level ){
6
+ this .level = level ;
7
+ }
8
+
9
+ @ Override
10
+ protected void write (String message ) {
11
+ System .out .println ("File::Logger: " + message );
12
+ }
13
+ }
Original file line number Diff line number Diff line change
1
+ package com .mayaha .dp .cor ;
2
+
3
+ public class Main {
4
+
5
+ private static AbstractLogger getChainOfLoggers (){
6
+
7
+ AbstractLogger errorLogger = new ErrorLogger (AbstractLogger .ERROR );
8
+ AbstractLogger fileLogger = new FileLogger (AbstractLogger .DEBUG );
9
+ AbstractLogger consoleLogger = new ConsoleLogger (AbstractLogger .INFO );
10
+
11
+ errorLogger .setNextLogger (fileLogger );
12
+ fileLogger .setNextLogger (consoleLogger );
13
+
14
+ return errorLogger ;
15
+ }
16
+
17
+ public static void main (String [] args ) {
18
+ AbstractLogger loggerChain = getChainOfLoggers ();
19
+
20
+ loggerChain .logMessage (AbstractLogger .INFO , "This is an information." );
21
+
22
+ loggerChain .logMessage (AbstractLogger .DEBUG ,"This is a debug level information." );
23
+
24
+ loggerChain .logMessage (AbstractLogger .ERROR ,"This is an error information." );
25
+ }
26
+
27
+ }
You can’t perform that action at this time.
0 commit comments