Presentation is loading. Please wait.

Presentation is loading. Please wait.

Adapter and Façade Patterns By Wode Ni and Leonard Bacon-Shone.

Similar presentations


Presentation on theme: "Adapter and Façade Patterns By Wode Ni and Leonard Bacon-Shone."— Presentation transcript:

1 Adapter and Façade Patterns By Wode Ni and Leonard Bacon-Shone

2 Outline: What we’ll cover  Façade Pattern  Motivation  Definition of a Façade  Advantages of Façade Pattern  The principle of least knowledge  Adapter Pattern  Motivation  Object Adapter  Class Adapter  Real World Adapter: Enumeration to Iterator  Adapter vs Façade vs Decorator  Implementation of Class adapter: C++ and Java

3 Façade Pattern: Motivation  Suppose we have a complex system, but we want a sequence of actions to be executed on one keystroke.  Example: a Computer  The procedure of starting a computer: After the power button is clicked. A series of operation are done by the CPU, RAM, and HDD, and then the operating system is booted.  Do it individually or do it collectively?

4 http://www.techspot.com/news/52 073-infographic-what-happens- when-your-computer-turns-on.html

5 Definition of Facade  “A unified interface to a set of interfaces in a subsystem. Façade defines a higher-level interface that makes the subsystem easier to use.”  Interface - does not only refer to a Java interface.  Real-world example: Compiler.  When you hit compile, or do “javac”, a sequence of instructions got executed in side a complex java compiler.

6 Advantages of having a Facade  No need to change my way of turning a computer on!  Regardless of the details of the computer: change of CPU, OS, Motherboard etc.  Decouple the client code(pressing the power button) from any one subsystem(Hardware of the computer)!  Code example  Still have an option to gain control of individual components.  You can change the setting for your brand new Razor mouse!  The façade pattern leaves you the access to all the classes

7 The principle of least knowledge  Definition: Talk only to your immediate friends  Guidelines: In a method of a class, only invoke methods that belong to  The object that the class itself represents  Objects passed in as a parameter to the method  Any object the method creates or instantiates  Any components of the object  How does the Façade pattern apply this knowledge?  We are not breaking the rules!

8 Adapter Pattern: Motivation  Existing code incompatible with other code you want to use  To allow existing code to use other code, create an adapter  Imagine a person from Hong Kong trying to charge their phone  Hong Kong people use a different socket to the US  In order to charge their phone, they must use an adapter  Adapter Pattern allows for clients to use existing software to connect to incompatible classes

9 Adapter Pattern: Definition  “The Adapter Pattern converts the interface of a class into another interface the client expects. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.” (p.243)  Terms explained:  Vendor class = adaptee = the US socket  Client code = Hong Kong plug  Adapter = HK to US converter  Naming Convention in the book: Adaptee’s name + “Adapter”  Plain English: We want the functionality of the adaptee via the language of the target interface, which is not supported by the adaptee.

10

11 Object Adapter  Object adapter uses composition to store the object of the adaptee and implement the target interface (the interface used by the client)  Because of polymorphism, all the subclasses of the adaptee can be adapted by the object adapter  Imagine a Chinese person traveling to the US, and wanting to speak like an American  Coding Example

12 Class Adapter  Class adapter uses multiple inheritance  Generally considered not possible in Java  While it is possible to emulate multiple inheritance in Java 8, using the default method in interfaces  Discussed further at the end of the presentation  Class adapters inherit both the client and adaptee classes  Class adapters mean that we don’t have to reimplement the entire interface because of inheritance

13 Object Adapter Class Adapter

14 Enumeration to Iterator  Some legacy code may still use the Enumerator interface, but a client who needs the functionality of the legacy code has an existing system with an Iterator  In order to access the functionality of the legacy code, an adapter is needed  Some methods are very easily adapted, e.g. hasNext() to hasMoreElements()  But what about a method that doesn’t exist in Enumeration, like the remove() method?  The best that can be done about non-existing related methods is throw a runtime exception (fortunately, the Iterator class already does this with UnsupportedOperationException)

15 Adapter vs Façade vs Decorator  Difference of intents: PatternIntent AdapterConvert one interface to another FacadeMakes an interface simpler DecoratorDoesn’t alter the interface, but adds responsibility

16 Thank you! 谢谢 AmericanAdapter adapter = new AmericanAdapter(american); adapter.xiexie();

17 Asked by ~everybody: implementation of class adapter!  C++ version: multiple inheritance. Even two way adapter!  Java approximation: new feature in Java 8 = default methods in interface


Download ppt "Adapter and Façade Patterns By Wode Ni and Leonard Bacon-Shone."

Similar presentations


Ads by Google