There are several alternatives to keep in mind before considering the Facade pattern, depending on what you are actually trying to accomplish. These are listed here:
- Abstract Factory pattern: If you only want to conceal how subsystem objects are initialized from the client code, you should consider using the Abstract Factory pattern instead of the Facade pattern.
- Adapter: If you are intending to write a "wrapper" over existing classes with the intent to bridge two incompatible interfaces, then you should consider using the Adapter pattern.