Facade Design Pattern in C++

Facade design pattern demo

Discussion. Structuring a system into subsystems helps reduce
complexity. A common design goal is to minimize the communication and
dependencies between subsystems.

One way to achieve this goal is to
introduce a "facade" object that provides a single, simplified
interface to the many, potentially complex, individual interfaces
within the subsystem. In this example, the "subsystem" for responding
to a networking service request has been modeled, and a facade
(FacilitiesFacade) interposed. The facade "hides" the twisted and
bizarre choreography necessary to satisfy even the most basic of
requests. All the user of the facade object has to do is make one or
two phone calls a week for 5 months, and a completed service request
results.