tecniche di progettazione: design patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... ·...

18
Tecniche di Progettazione: Design Patterns GoF: Façade Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica. 1

Upload: others

Post on 27-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Tecniche di Progettazione:

Design Patterns

GoF: Façade

Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica.1

Page 2: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Facade or Façade

� From www.m-w.com

� Main Entry: fa.cadeVariant(s): also fa.çade /f&-'säd/Function: noun

Etymology: French façade, from Italian

facciata, from faccia face, from (assumed)

Vulgar Latin facia

Date: circa 1681

1 : the front of a building; also : any

face of a building given special

architectural treatment <a museum's east

facade>

2 : a false, superficial, or artificial

appearance or effect2

Page 3: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Watching a movie the hard way….

Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica.

Page 4: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

What needs to be done to watch a

movie….

Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica.

Page 5: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica.

Page 6: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica.

Page 7: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Façade Pattern defined

The Façade Pattern provides 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.

Page 8: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Façade pattern – Class Diagram

Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica.

Page 9: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Design Principle

� Law of Demeter

� aka Principle of Least Knowledge (Head first)

� talk only to your immediate friends

Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica.

Page 10: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Client

The client only hasThe client only hasThe client only hasThe client only hasone friend one friend one friend one friend –––– andandandandthat is a good thingthat is a good thingthat is a good thingthat is a good thing

If the subsystemIf the subsystemIf the subsystemIf the subsystemgets too complicatedgets too complicatedgets too complicatedgets too complicatedOne can recursivelyOne can recursivelyOne can recursivelyOne can recursivelyapply the same apply the same apply the same apply the same principle.principle.principle.principle.

Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica.

Page 11: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Another perspective: The Problem

11

Client Classes

Subsystem classes

Need to communicatewith

Page 12: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

12

Another perspective: the solution

Client Classes

Subsystem classes

Facade

Page 13: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Consequences

� The Facade pattern offers the following benefits:

� It shields clients from subsystem components.

� It promotes weak coupling between the subsystem and its clients.

� help layer a system and the dependencies between objects.

� reduce compilation dependencies.

� simplify porting systems to other platforms.

� It doesn’t prevent applications from using subsystem classes

Page 14: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Subclassing: Façade is the common

interface of many façades

� Can further decouple clients and subsystem by making Façade an abstract class with concrete subclasses for different implementations of a subsystem.

� Alternative: Configure a Facade object with different subsystem objects.

Abstract Facade

Windows Facade Unix Facade Linux Facade

SubSystemW SubSystemU SubSystemL

Client

Page 15: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Implementation

� Public versus private subsystem classes.

� Public interface to a subsystem consists of classes that all clients can access; private interface is just for subsystem extenders.

� Façade class is part of the public interface. It may use private interfaces provided by subsystems (if they grant friendship)

Page 16: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Façade vs Adapter

� To many peole , these two patterns appear to be similar

� They both act as wrappers of a preexisting class

� They both take an interface that we don’t need and convert it to an interface that we can use

� With Facade, the intent is to simplify the existing interface

� With Adapter, we have a target interface that we are converting to; we often want the adapter to plug into an existing framework and behave polymorphically

Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica.16

Page 17: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

A little comparison

Pattern Intent

DecoratorConverts one interfaceto another

AdapterDoesn’t alter the interface,But adds responsibility

Facade Makes an interface simpler

Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica.

Page 18: Tecniche di Progettazione: Design Patternsdidawiki.di.unipi.it/lib/exe/fetch.php/magistrale... · 18 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica

Homework: DPHomework4

Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica.18

1. See homework for Adapter

2. Modify the home theater example along the followingdimensions:

1. CD is substituted with a french one

2. The system prevents you from watching a movie you sawrecently

3. Create and example where Façade is an abstract class with different concrete subclasses.

1. Compare with strategy