From bd4247e864937824dfd510fb26ddf1e63f9e7bc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Tue, 5 Sep 2017 23:28:44 +0300 Subject: [PATCH] #590 Add explanation for Facade pattern --- facade/README.md | 183 ++++++++++++++++++++++++++++++++++++- facade/etc/facade.png | Bin 33815 -> 0 bytes facade/etc/facade.ucls | 88 ------------------ facade/etc/facade.urm.puml | 60 ------------ facade/etc/facade_1.png | Bin 44417 -> 0 bytes pom.xml | 1 + 6 files changed, 183 insertions(+), 149 deletions(-) delete mode 100644 facade/etc/facade.png delete mode 100644 facade/etc/facade.ucls delete mode 100644 facade/etc/facade.urm.puml delete mode 100644 facade/etc/facade_1.png diff --git a/facade/README.md b/facade/README.md index 22ccd6911..66ca84256 100644 --- a/facade/README.md +++ b/facade/README.md @@ -15,7 +15,188 @@ tags: Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. -![alt text](./etc/facade_1.png "Facade") +## Explanation + +Real world example + +> How does a goldmine work? "Well, the miners go down there and dig gold!" you say. That is what you believe because you are using a simple interface that goldmine provides on the outside, internally it has to do a lot of stuff to make it happen. This simple interface to the complex subsystem is a facade. + +In plain words + +> Facade pattern provides a simplified interface to a complex subsystem. + +Wikipedia says + +> A facade is an object that provides a simplified interface to a larger body of code, such as a class library. + +**Programmatic Example** + +Taking our goldmine example from above. Here we have the dwarven mine worker hierarchy + +``` +public abstract class DwarvenMineWorker { + + private static final Logger LOGGER = LoggerFactory.getLogger(DwarvenMineWorker.class); + + public void goToSleep() { + LOGGER.info("{} goes to sleep.", name()); + } + + public void wakeUp() { + LOGGER.info("{} wakes up.", name()); + } + + public void goHome() { + LOGGER.info("{} goes home.", name()); + } + + public void goToMine() { + LOGGER.info("{} goes to the mine.", name()); + } + + private void action(Action action) { + switch (action) { + case GO_TO_SLEEP: + goToSleep(); + break; + case WAKE_UP: + wakeUp(); + break; + case GO_HOME: + goHome(); + break; + case GO_TO_MINE: + goToMine(); + break; + case WORK: + work(); + break; + default: + LOGGER.info("Undefined action"); + break; + } + } + + public void action(Action... actions) { + for (Action action : actions) { + action(action); + } + } + + public abstract void work(); + + public abstract String name(); + + static enum Action { + GO_TO_SLEEP, WAKE_UP, GO_HOME, GO_TO_MINE, WORK + } +} + +public class DwarvenTunnelDigger extends DwarvenMineWorker { + + private static final Logger LOGGER = LoggerFactory.getLogger(DwarvenTunnelDigger.class); + + @Override + public void work() { + LOGGER.info("{} creates another promising tunnel.", name()); + } + + @Override + public String name() { + return "Dwarven tunnel digger"; + } +} + +public class DwarvenGoldDigger extends DwarvenMineWorker { + + private static final Logger LOGGER = LoggerFactory.getLogger(DwarvenGoldDigger.class); + + @Override + public void work() { + LOGGER.info("{} digs for gold.", name()); + } + + @Override + public String name() { + return "Dwarf gold digger"; + } +} + +public class DwarvenCartOperator extends DwarvenMineWorker { + + private static final Logger LOGGER = LoggerFactory.getLogger(DwarvenCartOperator.class); + + @Override + public void work() { + LOGGER.info("{} moves gold chunks out of the mine.", name()); + } + + @Override + public String name() { + return "Dwarf cart operator"; + } +} + +``` + +To operate all these goldmine workers we have the facade + +``` +public class DwarvenGoldmineFacade { + + private final List workers; + + public DwarvenGoldmineFacade() { + workers = new ArrayList<>(); + workers.add(new DwarvenGoldDigger()); + workers.add(new DwarvenCartOperator()); + workers.add(new DwarvenTunnelDigger()); + } + + public void startNewDay() { + makeActions(workers, DwarvenMineWorker.Action.WAKE_UP, DwarvenMineWorker.Action.GO_TO_MINE); + } + + public void digOutGold() { + makeActions(workers, DwarvenMineWorker.Action.WORK); + } + + public void endDay() { + makeActions(workers, DwarvenMineWorker.Action.GO_HOME, DwarvenMineWorker.Action.GO_TO_SLEEP); + } + + private static void makeActions(Collection workers, + DwarvenMineWorker.Action... actions) { + for (DwarvenMineWorker worker : workers) { + worker.action(actions); + } + } +} +``` + +Now to use the facade + +``` +DwarvenGoldmineFacade facade = new DwarvenGoldmineFacade(); +facade.startNewDay(); +// Dwarf gold digger wakes up. +// Dwarf gold digger goes to the mine. +// Dwarf cart operator wakes up. +// Dwarf cart operator goes to the mine. +// Dwarven tunnel digger wakes up. +// Dwarven tunnel digger goes to the mine. +facade.digOutGold(); +// Dwarf gold digger digs for gold. +// Dwarf cart operator moves gold chunks out of the mine. +// Dwarven tunnel digger creates another promising tunnel. +facade.endDay(); +// Dwarf gold digger goes home. +// Dwarf gold digger goes to sleep. +// Dwarf cart operator goes home. +// Dwarf cart operator goes to sleep. +// Dwarven tunnel digger goes home. +// Dwarven tunnel digger goes to sleep. +``` ## Applicability Use the Facade pattern when diff --git a/facade/etc/facade.png b/facade/etc/facade.png deleted file mode 100644 index 5cc6271da191800a89fd596dfa1202499f210274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33815 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

7dHXc%oilFv{QwfjJLqXoK*+}VDf{o4K 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/facade/etc/facade.urm.puml b/facade/etc/facade.urm.puml deleted file mode 100644 index 477f9eee7..000000000 --- a/facade/etc/facade.urm.puml +++ /dev/null @@ -1,60 +0,0 @@ -@startuml -package com.iluwatar.facade { - class App { - + App() - + main(args : String[]) {static} - } - class DwarvenCartOperator { - - LOGGER : Logger {static} - + DwarvenCartOperator() - + name() : String - + work() - } - class DwarvenGoldDigger { - - LOGGER : Logger {static} - + DwarvenGoldDigger() - + name() : String - + work() - } - class DwarvenGoldmineFacade { - - workers : List - + DwarvenGoldmineFacade() - + digOutGold() - + endDay() - - makeActions(workers : Collection, actions : Action[]) {static} - + startNewDay() - } - abstract class DwarvenMineWorker { - - LOGGER : Logger {static} - + DwarvenMineWorker() - - action(action : Action) - + action(actions : Action[]) - + goHome() - + goToMine() - + goToSleep() - + name() : String {abstract} - + wakeUp() - + work() {abstract} - } - ~enum Action { - + GO_HOME {static} - + GO_TO_MINE {static} - + GO_TO_SLEEP {static} - + WAKE_UP {static} - + WORK {static} - + valueOf(name : String) : Action {static} - + values() : Action[] {static} - } - class DwarvenTunnelDigger { - - LOGGER : Logger {static} - + DwarvenTunnelDigger() - + name() : String - + work() - } -} -DwarvenGoldmineFacade --> "-workers" DwarvenMineWorker -Action ..+ DwarvenMineWorker -DwarvenCartOperator --|> DwarvenMineWorker -DwarvenGoldDigger --|> DwarvenMineWorker -DwarvenTunnelDigger --|> DwarvenMineWorker -@enduml \ No newline at end of file diff --git a/facade/etc/facade_1.png b/facade/etc/facade_1.png deleted file mode 100644 index 6ed0573fc56cd216e926b7c538b516f7e921e8b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44417 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 J6`ivR`Y#8bhkpP7 diff --git a/pom.xml b/pom.xml index 44461b091..cf1bf9831 100644 --- a/pom.xml +++ b/pom.xml @@ -470,6 +470,7 @@ bridge composite decorator + facade