A Facade is a higher level API over a whole subsystem. A God is class that violates SRP. Where do we draw the line? Does the following code represent any of the two:
enum UnitType{Demon, Paladin};
namespace demons
{
bool are_scary();
static unsigned numbers;
void attack();
void phase_out();
}
namespace paladins
{
static int morale;
void attack();
void retreat();
}
struct Combatant
{
// Depending on the type of unit
// and the values of the two global variables
// calls one of the appropriate functions
// and perhaps modifies the globals.
// Is this a proper facade for the 'units' subsystem?
void attack();
void retreat();
};
Extremely contrived, I know. What I am trying to illustrate is that a Facade rarely just forwards calls to appropriate functions/methods/types but rather often needs to implement additional logic and that logic encompasses a whole wide system.
application.Run(window)
). But again, the subsystem in question doesn't have to be very large.