Describe ways to assemble objects to implement a new functionality

Slides:



Advertisements
Similar presentations
Matt Klein. Decorator Pattern  Intent  Attach Additional responsibilities to an object by dynamically. Decorators provide a flexible alternative to.
Advertisements

1 Structural Design Patterns - Neeraj Ray. 2 Structural Patterns - Overview n Adapter n Bridge n Composite n Decorator.
Design Patterns Copyright © Vyacheslav Mukhortov, Nikita Nyanchuk-Tatarskiy, Copyright © INTEKS LLC,
PATTERNS -STRUCTURAL PATTERNS WATTANAPON G SUTTAPAK Software Engineering, School of Information Communication Technology, University of PHAYAO 1.
Design Patterns CS is not simply about programming
Algorithm Programming Structural Design Patterns Bar-Ilan University תשס " ו by Moshe Fresko.
Chapter 8 Object Design Reuse and Patterns. Finding Objects The hardest problems in object-oriented system development are: –Identifying objects –Decomposing.
Design Patterns Module Name - Object Oriented Modeling By Archana Munnangi S R Kumar Utkarsh Batwal ( ) ( ) ( )
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
Proxy Design Pattern Source: Design Patterns – Elements of Reusable Object- Oriented Software; Gamma, et. al.
Client/Server Software Architectures Yonglei Tao.
Design Patterns.
05 - Patterns Intro.CSC4071 Design Patterns Designing good and reusable OO software is hard. –Mix of specific + general –Impossible to get it right the.
CS 325: Software Engineering March 17, 2015 Applying Patterns (Part A) The Façade Pattern The Adapter Pattern Interfaces & Implementations The Strategy.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Design Patterns Part two. Structural Patterns Concerned with how classes and objects are composed to form larger structures Concerned with how classes.
Design Patterns: Structural Design Patterns
18 April 2005CSci 210 Spring Design Patterns 1 CSci 210.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
Object Oriented Software Engineering Chapter 16 and 17 review 2014/06/03.
SDP Structural Pattern. SDP-2 Structural Patterns Concerned with how classes and objects are composed to form large structures Class Patterns use.
Structural Design Patterns
02 - Structural Design Patterns – 2 Moshe Fresko Bar-Ilan University תשס"ח 2008.
Design Patterns Structural Patterns. Adapter Convert the interface of a class into another interface clients expect Adapter lets classes work together.
08 - StructuralCSC4071 Structural Patterns concerned with how classes and objects are composed to form larger structures –Adapter interface converter Bridge.
Structural Patterns1 Nour El Kadri SEG 3202 Software Design and Architecture Notes based on U of T Design Patterns class.
Proxy.
DESIGN PATTERNS COMMONLY USED PATTERNS What is a design pattern ? Defining certain rules to tackle a particular kind of problem in software development.
Behavioral Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
Sadegh Aliakbary. Copyright ©2014 JAVACUP.IRJAVACUP.IR All rights reserved. Redistribution of JAVACUP contents is not prohibited if JAVACUP.
Software Design Patterns Curtsy: Fahad Hassan (TxLabs)
CS 210 Final Review November 28, CS 210 Adapter Pattern.
Example to motivate discussion We have two lists (of menu items) one implemented using ArrayList and another using Arrays. How does one work with these.
Proxy Pattern defined The Proxy Pattern provides a surrogate or placeholder for another object to control access to it by creating a representative object.
Watching the movie the hard way…. Page 256 – Head First Design Patterns.
CS 210 Proxy Pattern Nov 16 th, RMI – A quick review A simple, easy to understand tutorial is located here:
Design Patterns: Structural Design Patterns General and reusable solutions to common problems in software design Software University
Design Patterns II Structural, Behavioral and Others SoftUni Team Software University
Structural Patterns C h a p t e r 4 – P a g e 55 StructuralPatterns Design patterns that describe how classes and objects can be combined to form larger.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
Design Patterns CSCE 315 – Programming Studio Spring 2013.
Facade Pattern Jim Fawcett CSE776 – Design Patterns Summer 2010
Presented by FACADE PATTERN
Design Patterns: MORE Examples
Design Patterns Spring 2017.
Chapter 10 Design Patterns.
Chapter 5:Design Patterns
Software Design Patterns
GoF Patterns (GoF) popo.
Structural Patterns Structural patterns control the relationships between large portions of your applications. Structural patterns affect applications.
MPCS – Advanced java Programming
Introduction to Design Patterns
Design Patterns Lecture part 2.
By SmartBoard team Adapter pattern.
Introduction to Design Patterns
Distribution and components
Facade Pattern Jim Fawcett CSE776 – Design Patterns Summer 2010
object oriented Principles of software design
Decorator Design Pattern
Design Patterns Satya Puvvada Satya Puvvada.
Advanced Programming Behnam Hatami Fall 2017.
Design Patterns in Game Design
Informatics 122 Software Design II
Object Oriented Design Patterns - Structural Patterns
Structural Patterns: Adapter and Bridge
Adapter Design Pattern
Informatics 122 Software Design II
Chapter 8, Design Patterns Introduction
Software Design Lecture 10.
GoF Patterns Ch. 26.
Presentation transcript:

Describe ways to assemble objects to implement a new functionality Structural Patterns Describe ways to assemble objects to implement a new functionality Basics of Design Patterns and SOLID Telerik Academy http://academy.telerik.com

Structural Patterns Describe ways to assemble objects to implement a new functionality Ease the design by identifying a simple way to realize relationships between entities These design patterns are all about class and object composition Structural class-creation patterns use inheritance to compose interfaces Structural object-patterns define ways to compose objects to obtain new functionality

List of Structural Patterns Façade Composite Flyweight Proxy Decorator Adapter Bridge

Façade

Interpreter Pattern Facade Pattern An object that provides a simplified interface to a larger body of code, such as class library Make a software library easier to use, understand and more readable Reduce dependencies of outside code Keeps the Principle of least knowledge Wrap a poorly designed APIs in a better one

Facade Pattern Examples Façade pattern used in many Win32 API based classes to hide Win32 complexity In XmlSerializer (in .NET) and JSON serializer (in JSON.NET) hides a complex task (that includes generating assemblies on the fly!) behind a very easy-to-use class. WebClient, File are another examples

Façade – Code Example The hard way: The facade way: popper.On(); Interpreter Pattern Façade – Code Example The hard way: popper.On(); popper.Pop(); amp.On(); amp.SetSurroundSound(); amp.SetVolume(10); amp.SetDvd(dvd); screen.Down(); lights.Dimm(20); projector.On(); projector.WideScreenMode(); dvd.On(); dvd.Play("Dzift"); The facade way: homeTheater.WatchMovie("Dzift");

Façade – Demo

Composite

Composite Pattern Composite Pattern allows to combine different types of objects in tree structures Gives the possibility to treat the same individual objects or groups of objects

Composite Pattern (2) Used when Examples in .NET Framework We have different objects and we want to treat them the same way We want to present hierarchy of objects Tree-like structures Examples in .NET Framework Windows.Forms.Control and its derived classes System.Web.UI.Control and its derived classes System.Xml.XmlNode and its derived classes

Composite Pattern – Example * 07/16/96 Composite Pattern – Example abstract class MailReceiver { public abstract void SendMail(); } class EmailAddress : MailReceiver { public override void SendMail() { /*...*/ } class GroupOfEmailAddresses : MailReceiver { private List<MailReceiver> participants; public override void SendMail() { foreach(var p in participants) p.SendMail(); static void Main() { var rootGroup = new GroupOfEmailAddresses(); rootGroup.SendMail(); } *

Composite Pattern – Demo

Flyweight

Flyweight Pattern Use sharing to support large numbers of fine- grained objects efficiently Reduce storage costs for large number of objects Share objects to be used in multiple contexts simultaneously Retain object oriented granularity and flexibility Minimizes memory use by sharing as much data as possible with other similar objects String.Intern returns Flyweight

Flyweight Pattern Each "flyweight" object is divided into 2 pieces: state-dependent (extrinsic, as parameter) state-independent (intrinsic, shared by factory)

Flyweight – Demo

Proxy

The Proxy Pattern An object representing another object Provide a surrogate or placeholder for another object to control access to it Use an extra level of indirection to support distributed, controlled or intelligent access Add a wrapper and delegation to protect the real component from undue complexity Can be implemented using inheritance

Proxy – Applicability Remote proxy Virtual proxy Protection proxy Local representative of remote object Example: WPF (decouple networking details), COM Callable Wrappers Virtual proxy Creates expensive object on demand Examples: placeholder image, Entity Framework, cached repository Protection proxy Used to control access to an object, based on some authorization rules

Proxy Pattern – Demo

Decorator

Decorator Pattern Add functionality to existing objects at run-time Wrapping original component Alternative to inheritance (class explosion) Support Open-Closed principle Flexible design, original object is unaware

Class Explosion

Preventing Class Еxplosion LargePizzaWithCheeseHamAndPeppers Create LargePizza, apply HamDecorator, apply CheeseDecorator and apply PeppersDecorator

Class Explosion Refactored

Decorator Pattern Uses Applicable in legacy systems Used to add functionality to UI controls Can be used to extend sealed classes In .NET: CryptoStream and GZipStream decorates Stream In WPF Decorator class provides a base class for elements that apply effects onto or around a single child element, such as Border or Viewbox

Decorator Pattern – Demo

a.k.a. Wrapper or Translator Adapter a.k.a. Wrapper or Translator

* Adapter Pattern 07/16/96 Converts the given class' interface into another class requested by the client Wraps an existing class with a new interface Impedance match an old component to a new system Allows classes to work together when this is impossible due to incompatible interfaces In languages with multiple inheritance it is possible to adapt to more than one class (a.k.a. class adapters) *

Adapter Pattern (2) A single Adapter interface may work with many Adaptees In ADO.NET we have IDataAdapter with OleDbDataAdapter, SqlClientDataAdapter Each is an adapter for its specific database Client wants to use the adaptee but can’t due to incompatible interfaces

Adapter – Demo In the demo, RichCompound implements ICompound and wraps ChemicalDatabank

Bridge

* 07/16/96 Bridge Pattern Used to divide the abstraction and its implementation (they are by default coupled) That way both can be rewritten independently Solves problems usually solved by inheritance From: Abstraction -> Implementation To: Abstraction -> Abstraction -> Implementation One abstraction uses another abstraction and they can be changed independently *

Bridge Pattern (2) Abstraction and implementation can be extended independently Creates “Has-A” relationship between Abstraction and Implementor “Favor composition over inheritance” Has-A

Bridge Example with Burgers From coupled: All menu combinations To uncoupled: Burger with addition Two separate concepts Bridge

Bridge Pattern – Demo

Proxy vs. Decorator vs. Adapter vs. Bridge Proxy – to lazy-instantiate an object, or hide the fact that you're calling a remote service, or control access to the object (one-to-one interface) Decorator – to add functionality to an object runtime (not by extending that object's type) Adapter – to map an abstract interface to another object which has similar functional role, but a different interface (changes interface for the client) Bridge – define both the abstract interface and the underlying implementation. I.e. you're not adapting to some legacy or third-party code, you're the designer of all the code but you need to be able to swap out different implementations (all changeable)

Structural Patterns http://academy.telerik.com

Free Trainings @ Telerik Academy C# Programming @ Telerik Academy csharpfundamentals.telerik.com Telerik Software Academy academy.telerik.com Telerik Academy @ Facebook facebook.com/TelerikAcademy Telerik Software Academy Forums forums.academy.telerik.com