/**
* Copyright (C) 2022 by Martin Robillard. See https://codesample.info/about.html
*/
package e2.chapter6;
/**
* A CardSource decorator that logs cards drawn from the
* source.
*/
public class LoggingDecorator implements CardSource {
CardSource aSource;
public LoggingDecorator( CardSource pSource ) {
aSource = pSource;
}
@Override
public Card draw() {
Card card = aSource.;
System.out.(card);
return card;
}
@Override
public boolean isEmpty() {
return aSource.isEmpty();
}
@Override
public CardSource copy() {
return new LoggingDecorator(aSource.copy());
}
}
The field is not declared final
to allow cloning, as done
in method clone()
. Otherwise, it would be better to declare this
field final
.
The field is not declared final
to allow cloning, as done
in method clone()
. Otherwise, it would be better to declare this
field final
.
The decorator delegates the call to the draw()
method
of it's decorated source.
The decorator delegates the call to the draw()
method
of it's decorated source.
This is the decoration: the extra behavior on top of the original behavior (which was delegated back to the original source).
print(String)
and then println()
.
This is the decoration: the extra behavior on top of the original behavior (which was delegated back to the original source).
print(String)
and then println()
.
x
- The Object
to be printed.
Chapter 6, insight #4
Use the Decorator when you need to add functionality to certain objects, while being able to use them in place of regular objects
Chapter 6, insight #4
Use the Decorator when you need to add functionality to certain objects, while being able to use them in place of regular objects
System
class contains several useful class fields and methods. It cannot be instantiated. Among the facilities provided by the System
class are standard input, standard output, and error output streams; access to externally defined properties and environment variables; a means of loading files and libraries; and a utility method for quickly copying a portion of an array.
System
class contains several useful class fields and methods. It cannot be instantiated. Among the facilities provided by the System
class are standard input, standard output, and error output streams; access to externally defined properties and environment variables; a means of loading files and libraries; and a utility method for quickly copying a portion of an array.
Console.charset()
if the Console
exists, stdout.encoding otherwise.
Console.charset()
if the Console
exists, stdout.encoding otherwise.
For simple stand-alone Java applications, a typical way to write a line of output data is:
System.out.println(data)
See the println
methods in class PrintStream
.