ede3954d86
See notes in "Foreword to the Leanpub Edition"
43 lines
967 B
Java
43 lines
967 B
Java
// patterns/CleanTheFloor.java
|
|
// (c)2021 MindView LLC: see Copyright.txt
|
|
// We make no guarantees that this code is fit for any purpose.
|
|
// Visit http://OnJava8.com for more book information.
|
|
// State with different compositional interface.
|
|
|
|
class FloorCleaner {
|
|
private Attachment attachment = new Vacuum();
|
|
public void change(Attachment newAttachment) {
|
|
attachment = newAttachment;
|
|
}
|
|
public void clean() { attachment.action(); }
|
|
}
|
|
|
|
interface Attachment {
|
|
void action();
|
|
}
|
|
|
|
class Vacuum implements Attachment {
|
|
@Override public void action() {
|
|
System.out.println("Vacuuming");
|
|
}
|
|
}
|
|
|
|
class Mop implements Attachment {
|
|
@Override public void action() {
|
|
System.out.println("Mopping");
|
|
}
|
|
}
|
|
|
|
public class CleanTheFloor {
|
|
public static void main(String[] args) {
|
|
FloorCleaner floorCleaner = new FloorCleaner();
|
|
floorCleaner.clean();
|
|
floorCleaner.change(new Mop());
|
|
floorCleaner.clean();
|
|
}
|
|
}
|
|
/* Output:
|
|
Vacuuming
|
|
Mopping
|
|
*/
|