Download presentation
Presentation is loading. Please wait.
Published byAnnabel Bradford Modified over 9 years ago
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.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.