Design Patterns in ActionScript–Facade

Hardware-My-Computer-2-256x256 Have you ever heard Xerox PARC (Palo Alto Research Center, @see http://en.wikipedia.org/wiki/PARC_(company) )? This research center has many great innovations. GUI (Graphical User Interface) is one of them.

The history of GUI is an interesting story. After the PARC invent the GUI, they didn’t put this into business immediately. Sometimes later, a young man visited this center, and was shocked by the great innovations including the GUI. When the young man backed to his company, he put those ideas into their product, Macintosh, the first commercially successful product using GUI. And the young man, the CEO of that fruit company, began his legend in Silicon Valley.

OK, let’s turn to our topic today. Have you ever think about something under the GUI? Such as, when you click a button, how the computer will do? I mean the way, not the result. For example, when you click “open”, maybe it will show you a file chooser dialog. The file chooser dialog is the result, and the way to get the result maybe very complex. I think this is the great of GUI, you needn’t know the way, and you just need to know the result. All the details were covered by the system.

This situation was very common in our daily life. When you drive your car, you just put your foot on the accelerator pedal. Of course, you don’t know the details how the cat started, except you’ve ever studied it.

There is a pattern corresponding to these situations. It was called Façade.

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.

– By THE GOF BOOK

In the car example, you don’t know the inner structure of the car. And the car supplies you a higher-level interface, the accelerator pedal. Let’s mimic this example.

In order to make it easier to understand, we will only use three classes to illustrate this example, the Car, CarEngine and CarWheel.

You can see the diagram below.

clip_image002

< click to see oraginal image file>

Also, it can be described as blew.

clip_image004

< click to see oraginal image file>

From the client side, the car is a subsystem. And the client doesn’t need to know the internal structure of the car. All he need is the high-level interfaces.

You can see the source code for more information(download Download Full Project).

As you see, this pattern is mainly use for reduce the complex of the subsystem, when you want to use some function provide by a subsystem. You don’t need to know the details about the subsystem, if you use this pattern. You just need to know the interfaces. It’s very helpful when you cooperate with others.

Enjoy!

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • DZone
  • Reddit
  • Technorati
  • StumbleUpon
  • Twitter
RSS Enjoy this Post? Subscribe to Ntt.cc

RSS Feed   RSS Feed     Email Feed  Email Feed Follow us Follow us
You can leave a response, or trackback from your own site.

Leave a Reply