STRUCTURAL PATTERNS-
FACADE DESIGN PATTERN
Dr. S. Neelima
M.Tech Ph.D CSE
Priyadarshini Institute of Science and Technology
for Women, KHAMMAM
Intent
• Facade is a structural design pattern.
• 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.
Facader Design Pattern- Dr. S. Neelima 2
Motivation
• Consider for example a programming environment that gives
applications access to its compiler subsystem.
• This subsystem contains classes such as Scanner, Parser,
ProgramNode, BytecodeStream, and ProgramNodeBuilder that
implement the compiler.
Motivation…
To provide a higher-level interface that can shield clients from these
classes, the compiler subsystem also includes a Compiler class. This class
defines a unified interface to the compiler's functionality. The Compiler
class acts as a facade: It glues together the classes that implement
compiler functionality without hiding them completely.
Facader Design Pattern- Dr. S. Neelima 3
Applicability
• Use the Facade pattern when you need to have a limited but
straightforward interface to a complex subsystem.
• Use the Facade when you want to structure a subsystem into layers.
Facader Design Pattern- Dr. S. Neelima 4
Structure
Participants
Facade (Compiler)
• knows which subsystem classes are responsible for a request.
• delegates client requests to appropriate subsystem objects.
· subsystem classes (Scanner, Parser, ProgramNode, etc.)
• implement subsystem functionality.
• handle work assigned by the Facade object.
• have no knowledge of the facade; that is, they keep no references
• to it.
Facader Design Pattern- Dr. S. Neelima 5
Facader Design Pattern- Dr. S. Neelima 6
Collaborations
• Clients communicate with the subsystem by sending requests to
Facade, which forwards them to the appropriate subsystem object(s).
• Clients that use the facade don't have to access its subsystem objects
directly.
Consequences
Pros
• You can isolate your code from the complexity of a subsystem.
Cons
• A facade can become a god object coupled to all classes of an app.
Implement
• Check whether it’s possible to provide a simpler interface than what an
existing subsystem already provides. You’re on the right track if this
interface makes the client code independent from many of the
subsystem’s classes.
• Declare and implement this interface in a new facade class. The facade
should redirect the calls from the client code to appropriate objects of
the subsystem. The facade should be responsible for initializing the
subsystem and managing its further life cycle unless the client code
already does this.
Facader Design Pattern- Dr. S. Neelima 7
Implement ….
• To get the full benefit from the pattern, make all the client code
communicate with the subsystem only via the facade. Now the client
code is protected from any changes in the subsystem code. For example,
when a subsystem gets upgraded to a new version, you will only need to
modify the code in the facade.
• If the facade becomes too big, consider extracting part of its behavior to
a new, refined facade class.
Facader Design Pattern- Dr. S. Neelima 8
Known Uses
Facader Design Pattern- Dr. S. Neelima 9
• In the ET++ application framework , an application can have built-in
browsing tools for inspecting its objects at run-time. These browsing
tools are implemented in a separate subsystem that includes a Facade
class called "ProgrammingEnvironment.“
• The Choices operating system [CIRM93] uses facades to compose many
frameworks into one.
Related Patterns
• Abstract Factory can be used with Facade to provide an interface for
creating subsystem objects in a subsystem-independent way.
• Mediator is similar to Facade in that it abstracts functionality of
existing classes.
• Facade objects are often Singletons
Facader Design Pattern- Dr. S. Neelima 10
Facader Design Pattern- Dr. S. Neelima 11

Facade design pattern

  • 1.
    STRUCTURAL PATTERNS- FACADE DESIGNPATTERN Dr. S. Neelima M.Tech Ph.D CSE Priyadarshini Institute of Science and Technology for Women, KHAMMAM
  • 2.
    Intent • Facade isa structural design pattern. • 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. Facader Design Pattern- Dr. S. Neelima 2 Motivation • Consider for example a programming environment that gives applications access to its compiler subsystem. • This subsystem contains classes such as Scanner, Parser, ProgramNode, BytecodeStream, and ProgramNodeBuilder that implement the compiler.
  • 3.
    Motivation… To provide ahigher-level interface that can shield clients from these classes, the compiler subsystem also includes a Compiler class. This class defines a unified interface to the compiler's functionality. The Compiler class acts as a facade: It glues together the classes that implement compiler functionality without hiding them completely. Facader Design Pattern- Dr. S. Neelima 3
  • 4.
    Applicability • Use theFacade pattern when you need to have a limited but straightforward interface to a complex subsystem. • Use the Facade when you want to structure a subsystem into layers. Facader Design Pattern- Dr. S. Neelima 4 Structure
  • 5.
    Participants Facade (Compiler) • knowswhich subsystem classes are responsible for a request. • delegates client requests to appropriate subsystem objects. · subsystem classes (Scanner, Parser, ProgramNode, etc.) • implement subsystem functionality. • handle work assigned by the Facade object. • have no knowledge of the facade; that is, they keep no references • to it. Facader Design Pattern- Dr. S. Neelima 5
  • 6.
    Facader Design Pattern-Dr. S. Neelima 6 Collaborations • Clients communicate with the subsystem by sending requests to Facade, which forwards them to the appropriate subsystem object(s). • Clients that use the facade don't have to access its subsystem objects directly. Consequences Pros • You can isolate your code from the complexity of a subsystem. Cons • A facade can become a god object coupled to all classes of an app.
  • 7.
    Implement • Check whetherit’s possible to provide a simpler interface than what an existing subsystem already provides. You’re on the right track if this interface makes the client code independent from many of the subsystem’s classes. • Declare and implement this interface in a new facade class. The facade should redirect the calls from the client code to appropriate objects of the subsystem. The facade should be responsible for initializing the subsystem and managing its further life cycle unless the client code already does this. Facader Design Pattern- Dr. S. Neelima 7
  • 8.
    Implement …. • Toget the full benefit from the pattern, make all the client code communicate with the subsystem only via the facade. Now the client code is protected from any changes in the subsystem code. For example, when a subsystem gets upgraded to a new version, you will only need to modify the code in the facade. • If the facade becomes too big, consider extracting part of its behavior to a new, refined facade class. Facader Design Pattern- Dr. S. Neelima 8
  • 9.
    Known Uses Facader DesignPattern- Dr. S. Neelima 9 • In the ET++ application framework , an application can have built-in browsing tools for inspecting its objects at run-time. These browsing tools are implemented in a separate subsystem that includes a Facade class called "ProgrammingEnvironment.“ • The Choices operating system [CIRM93] uses facades to compose many frameworks into one.
  • 10.
    Related Patterns • AbstractFactory can be used with Facade to provide an interface for creating subsystem objects in a subsystem-independent way. • Mediator is similar to Facade in that it abstracts functionality of existing classes. • Facade objects are often Singletons Facader Design Pattern- Dr. S. Neelima 10
  • 11.
    Facader Design Pattern-Dr. S. Neelima 11