Difference between revisions of "DesignPatterns"

From Suhrid.net Wiki
Jump to navigationJump to search
Line 25: Line 25:
 
* Shield clients from myriad subsystem components - hence promote weak coupling between clients and subsystems.
 
* Shield clients from myriad subsystem components - hence promote weak coupling between clients and subsystems.
 
* Reduces number of objects clients have to deal with.
 
* Reduces number of objects clients have to deal with.
 +
 +
== Example ==
 +
 +
<syntaxhighlight lang="java5">
 +
 +
public class Compiler {
 +
  public Compiler();
 +
  private Node node_tree;
 +
  private Scanner scanner;
 +
  private Parser parser;
 +
  private Risc_CG generator;
 +
  public void compile() {
 +
  node_tree=parser.parse(scanner);
 +
  generator.emit(node_tree);
 +
  .....
 +
  }
 +
}
 +
 +
</syntaxhighlight>
 +
 +
* The Compiler class is a facade to various sub system interfaces  (Node, Scanner, Parser, Generator) that comprise a compiler.
 +
* The compile() method provides a high level interface to the whole process of compiling using various subsystem interfaces.
  
 
[[Category:OODE]]
 
[[Category:OODE]]

Revision as of 09:14, 17 December 2011

Intro

  • A design pattern systematically names, explains, and evaluates an important and recurring design problem and its solution.
  • They capture the intent behind a design by identifying objects, collaborations, and distributions of responsibilities.
    • They capture static and dynamic structures of successful solutions to problems.
  • Patterns support reuse of software architecture and design.
  • They give software engineers a vocabulary with which to describe their designs.
  • Patterns solve design problems such as:
    • Finding appropriate classes to solve a problem.
    • Determining how abstract or how concrete a class should be.
    • Specifying interfaces of classes, architectures, and binary components.
    • Designing for change.
  • Patterns are not code-reuse they are experience reuse !

Facade

Intent

  • Provide a common interface to a set of interfaces within a subsystem.
  • Defines a higher level interface to make the subsystem interfaces easier to use.

Motivation

  • Provide a simplified interface.

Consequences

  • Shield clients from myriad subsystem components - hence promote weak coupling between clients and subsystems.
  • Reduces number of objects clients have to deal with.

Example

public class Compiler {
  public Compiler();
  private Node node_tree;
  private Scanner scanner;
  private Parser parser;
  private Risc_CG generator;
  public void compile() {
   node_tree=parser.parse(scanner);
   generator.emit(node_tree);
   .....
  }
}
  • The Compiler class is a facade to various sub system interfaces (Node, Scanner, Parser, Generator) that comprise a compiler.
  • The compile() method provides a high level interface to the whole process of compiling using various subsystem interfaces.