Design patterns. Jef De Smedt Beta VZW

Similar documents
Design Pattern. CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.)

SDC Design patterns GoF

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 6: Design Patterns

The Strategy Pattern Design Principle: Design Principle: Design Principle:

Object-Oriented Oriented Programming

Object-Oriented Design

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently.

Slide 1. Design Patterns. Prof. Mirco Tribastone, Ph.D

Brief Note on Design Pattern

Using Design Patterns in Java Application Development

Object Oriented Paradigm

Object-oriented Software Design Patterns

Design Patterns. Manuel Mastrofini. Systems Engineering and Web Services. University of Rome Tor Vergata June 2011

Keywords: Abstract Factory, Singleton, Factory Method, Prototype, Builder, Composite, Flyweight, Decorator.

Design Patterns: Structural and Behavioural

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

Ingegneria del Software Corso di Laurea in Informatica per il Management. Design Patterns part 1

Applying the Observer Design Pattern

Design Patterns. Manuel Mastrofini. Systems Engineering and Web Services. University of Rome Tor Vergata June 2011

Applying Design Patterns to accelerate development of reusable, configurable and portable UVCs. Accellera Systems Initiative 1

LECTURE NOTES ON DESIGN PATTERNS MCA III YEAR, V SEMESTER (JNTUA-R09)

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

Design Patterns. SE3A04 Tutorial. Jason Jaskolka

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

1 Software Architecture

Application Architectures, Design Patterns

Introduction to Software Engineering: Object Design I Reuse & Patterns

Software Design COSC 4353/6353 D R. R A J S I N G H

DESIGN PATTERN - INTERVIEW QUESTIONS

Design Patterns. An introduction

Design Patterns. (and anti-patterns)

Software Eningeering. Lecture 9 Design Patterns 2

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

Design Patterns Lecture 2

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

Applying the Decorator Design Pattern

Software Development Project. Kazi Masudul Alam

Design Patterns Reid Holmes

Topics in Object-Oriented Design Patterns

What is Design Patterns?

An Introduction to Patterns

DESIGN PATTERNS MOCK TEST DESIGN PATTERNS MOCK TEST II

OODP Session 4. Web Page: Visiting Hours: Tuesday 17:00 to 19:00

CS342: Software Design. November 21, 2017

DESIGN PATTERNS SURESH BABU M ASST PROFESSOR VJIT

Applying the Factory Method Design Pattern

Composite Pattern. IV.4 Structural Pattern

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1

UNIT I Introduction to Design Patterns

A Reconnaissance on Design Patterns

Object Oriented Methods with UML. Introduction to Design Patterns- Lecture 8

Information systems modelling UML and service description languages

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate

Design Patterns. Dr. Rania Khairy. Software Engineering and Development Tool

CSCI 253. Overview. The Elements of a Design Pattern. George Blankenship 1. Object Oriented Design: Iterator Pattern George Blankenship

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout

Applying Some Gang of Four Design Patterns CSSE 574: Session 5, Part 3

THOMAS LATOZA SWE 621 FALL 2018 DESIGN PATTERNS

Applying Design Patterns to SCA Implementations

SYLLABUS CHAPTER - 1 [SOFTWARE REUSE SUCCESS FACTORS] Reuse Driven Software Engineering is a Business

Review Software Engineering October, 7, Adrian Iftene

UNIT I Introduction to Design Patterns

Topics. Software Process. Agile. Requirements. Basic Design. Modular Design. Design Patterns. Testing. Quality. Refactoring.

Lecture 17: Patterns Potpourri. Copyright W. Howden 1

What is Design Patterns?

Idioms and Design Patterns. Martin Skogevall IDE, Mälardalen University

Think of drawing/diagramming editors. ECE450 Software Engineering II. The problem. The Composite pattern

Lecture 20: Design Patterns II

Design of Software Systems (Ontwerp van SoftwareSystemen) Design Patterns Reference. Roel Wuyts

SOLID DESIGN PATTERNS FOR MERE MORTALS

CSCI Object Oriented Design: Frameworks and Design Patterns George Blankenship. Frameworks and Design George Blankenship 1

UP Requirements. Software Design - Dr Eitan Hadar (c) Activities of greater emphasis in this book. UP Workflows. Business Modeling.

Design Patterns. Observations. Electrical Engineering Patterns. Mechanical Engineering Patterns

Design Pattern and Software Architecture: IV. Design Pattern

Summary of the course lectures

Ingegneria del Software Corso di Laurea in Informatica per il Management. Design Patterns part 1

The Design Patterns Matrix From Analysis to Implementation

Tuesday, October 4. Announcements

Design Patterns V Structural Design Patterns, 2

COSC 3351 Software Design. Design Patterns Behavioral Patterns (I)

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

Design Patterns. Hausi A. Müller University of Victoria. Software Architecture Course Spring 2000

What is Design Patterns?

APPLYING DESIGN PATTERNS TO SCA IMPLEMENTATIONS

DESIGN PATTERNS FOR MERE MORTALS

Object-Oriented Design I - SOLID

Design patterns. OOD Lecture 6

GRASP Design Patterns A.A. 2018/2019

TDDB84. Lecture 2. fredag 6 september 13

1 of 27 9/27/2001 5:34 PM

A few important patterns and their connections

Plan. A few important patterns and their connections. Singleton. Singleton: class diagram. Singleton Factory method Facade

INSTITUTE OF AERONAUTICAL ENGINEERING

CSC207H: Software Design Lecture 6

Design Patterns. GoF design patterns catalog

Design Patterns: Elements of Reusable Object Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Design Patterns Revisited

Design Patterns #3. Reid Holmes. Material and some slide content from: - GoF Design Patterns Book - Head First Design Patterns

Transcription:

Design patterns Jef De Smedt Beta VZW

Who Beta VZW www.betavzw.org Association founded in 1993 Computer training for the unemployed Computer training for employees (Cevora/Cefora) 9:00-12:30 13:00-16:00

You Name Function/Job description Experience with programming languages in general Object Oriented programming languages Expectations (or what is your excuse for being here)

Overview Introduction Creational Design patterns Structural Design patterns Behavorial Design patterns Enterprise Design patterns (Fowler) S.O.L.I.D. principles ( uncle Bob Martin)

Design pattherns: higher level of abstraction Classsse Procedure Design Patterns + Data Sequence Selection Iteration sum = sum + 5 MOV AL, 01h

Stages in design pattern usage 1. What is a design pattern? 2. Let s take a look at a catalog of design patterns and see which pattern I can use in my code 3. I realize I can use design pattern X in my code 4. I do not think anymore of design patterns. I use design principles intuitively

Design patterns are about communication SQLBuilder, FileVisitor, XmlParserFactory, ListIterator, InvoiceProxy Every 5 years the number of programmers doubles => half the programmers are inexperienced(write bad code) How do we communicate with so many new programmers?

Design pattern Name Description of the problem Description of the solution(pattern) Advantages/disadvantages

General principles Program to an interface, not to an implementation Declaration void ExecuteCommand(String cmd, IConnection c) Call ExecuteCommand(...,new OracleConnection()) ExecuteCommand(...,new MySQLConnection())

General principles Favor object composition over class inheritance class List{ public void add(object o){...} } class PersonList: List{ //inheritance } class PersonList{ //composition private List l = new List(); public void add(person p){ l.add(p);} }

Singleton Name: Singleton Description: I want one global object Solution: Define private static instance + static method Advantages/disadvantages: Can be used to manage a pool of objects

Creational patterns (Patterns to create an object)

Factory method Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.

Abstract Factory Provide an interface for creating families of related or dependent objects without specifying their concrete classes.

Builder Separate the construction of a complex object from its representation so that the same construction process can create different different representations.

Prototype Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.

UML symbols Generalisation, inheritance Aggregation (filled diamond =composition) Association Dependency

Structural patterns Combine classes and object to form larger structures

Adapter Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn t otherwise because of incompatible interfaces

Bridge Decouple and abstractation from its implementation so that the two can vary independently.

Composite Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly

Decorator Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.

Problem Purchase has to be approved < 10000 it can be approved by Director < 25000 it can be approved by vice president Else it must be approved by president For some purchases only vice president and president can approve For some purchases only director and president can approve

Facade Privide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.

Flyweight Use sharing to support large numbers of fine-grained objects efficiently.

Proxy Provide a surrogate or placeholder for another object to control access to it.

Behavorial Patterns Algorithms and the assignment of responsibilities between objects

Chain of responsibility Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.

Command Encapsulate request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations

Interpreter Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.

Iterator Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.

Mediator Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.

Memento Without violating encapsulation, capture and externalize an object s internal state so that the object can be restored to this state later.

Observer Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.

State Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.

Strategy Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.

Template method Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template method lets subclasses redefine certain steps of an algorithm without changing the algorithm s structure.

Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates. Visitor

S.O.L.I.D. Single Responsibility Principle Open for extension, closed for modification Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle

Grasp(Generalized Responsibility Assignment Software Patterns/Principles) Information Expert: Which class is responsible for what Creator: Who is responsible for the creation of an object Controller: communication between UI and service layer Low Coupling: classes are independent High Cohesion: class does one thing

Grasp Polymorfism: implementation belongs to a type Pure Fabrication: non-business domain class to implement a design principle Indirection: go-between class to connect two classes Protected Variations: Hide changes using interfaces or polymorfisme

Conclusion Design patterns are no silver bullet Design patterns is no cookbook Good developers use Design patterns intuitively Design patterns are a way of communicating