1 More OO Design Patterns CSC 335: Object-Oriented Programming and Design.

Slides:



Advertisements
Similar presentations
Design Patterns.
Advertisements

Creational Design Patterns. Creational DP: Abstracts the instantiation process Helps make a system independent of how objects are created, composed, represented.
Chapter 5: The Singleton Pattern
Creational Patterns, Abstract Factory, Builder Billy Bennett June 11, 2009.
Advanced Programming in Java
Sadegh Aliakbary Sharif University of Technology Fall 2010.
The Bridge Pattern.. Intent Decouple an abstraction from its implementation so that the two can vary independently Also known as: Handle/Body.
Plab – Tirgul 12 Design Patterns
Jan Ron McFadyen1 Singleton To guarantee that there is at most one instance of a class we can apply the singleton pattern. Singleton Static.
Oct Ron McFadyen1 Singleton To guarantee that there is at most one instance of a class we can apply the singleton pattern. Singleton Static.
Patterns Lecture 2. Singleton Ensure a class only has one instance, and provide a global point of access to it.
Spring 2010ACS-3913 Ron McFadyen1 Singleton To guarantee that there is at most one instance of a class we can apply the singleton pattern. Singleton Static.
Winter 2007ACS-3913 Ron McFadyen1 Singleton To guarantee that there is at most one instance of a class we can apply the singleton pattern. Singleton Static.
7/16/2015Singleton creational design pattern1 Eivind J. Nordby Karlstad University Dept. of Computer Science.
Creational Patterns Making Objects The Smart Way Brent Ramerth Abstract Factory, Builder.
Design Patterns CS 124 Reference: Gamma et al (“Gang-of-4”), Design Patterns.
Singleton Christopher Chiaverini Software Design & Documentation September 18, 2003.
Programming Languages and Paradigms Object-Oriented Programming.
Design Patterns.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
Objects First With Java A Practical Introduction Using BlueJ Designing applications 1.0.
Features of Object Oriented Programming Lec.4. ABSTRACTION AND ENCAPSULATION Computer programs can be very complex, perhaps the most complicated artifact.
Tech Talk Go4 Factory Patterns Presented By: Matt Wilson.
CSCI-383 Object-Oriented Programming & Design Lecture 13.
The Factory Patterns SE-2811 Dr. Mark L. Hornick 1.
Design Patterns Gang Qian Department of Computer Science University of Central Oklahoma.
Design Patterns CS 124 Reference: Gamma et al (“Gang-of-4”), Design Patterns.
Singleton and Basic UML CS340100, NTHU Yoshi. What is UML Unified Modeling Language A standardized general-purpose modeling language in the field of software.
1 Creational Design Patterns CSC 335: Object-Oriented Programming and Design.
Design Principle & Patterns by A.Surasit Samaisut Copyrights : All Rights Reserved.
Patterns in programming1. 2 What are patterns? Answers to common design problems. A language used by developers –To discuss answers to design problems.
CDP-1 9. Creational Pattern. CDP-2 Creational Patterns Abstracts instantiation process Makes system independent of how its objects are –created –composed.
Designing applications Main concepts to be covered Discovering classes CRC cards Designing interfaces Patterns Objects First with Java - A Practical.
Design Patterns Yonglei Tao. Design Patterns  A design pattern describes a recurring design problem, a solution, and the context in which that solution.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 13 Creational Design Pattern SWE 316: Software Design and Architecture.
The Singleton Pattern SE-2811 Dr. Mark L. Hornick 1.
Behavioral Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
Software Design Patterns Curtsy: Fahad Hassan (TxLabs)
Design Patterns David Talby. This Lecture Re-routing method calls Chain of Responsibility Coding partial algorithms Template Method The Singleton Pattern.
Design Patterns Software Engineering CS 561. Last Time Introduced design patterns Abstraction-Occurrence General Hierarchy Player-Role.
Design Patterns Introduction
Threads and Singleton. Threads  The JVM allows multiple “threads of execution”  Essentially separate programs running concurrently in one memory space.
OOP Review CS 124.
The Factory Method Pattern (Creational) ©SoftMoore ConsultingSlide 1.
Advanced Object-oriented Design Patterns Creational Design Patterns.
Singleton Pattern Presented By:- Navaneet Kumar ise
The Singleton Pattern (Creational)
1 More OO Design Patterns CSC 335: Object-Oriented Programming and Design.
Singleton Pattern. Problem Want to ensure a single instance of a class, shared by all uses throughout a program Context Need to address initialization.
Overview of Creational Patterns ©SoftMoore ConsultingSlide 1.
1 Creational Design Patterns CSC 335: Object-Oriented Programming and Design.
Csci 490 / Engr 596 Special Topics / Special Projects Software Design and Scala Programming Spring Semester 2010 Lecture Notes.
Design Patterns Creational Patterns. Abstract the instantiation process Help make the system independent of how its objects are created, composed and.
Designing applications Main concepts to be covered Discovering classes CRC cards Designing interfaces Patterns © 2017 Pearson Education, Inc. Hoboken,
1 Creational Design Patterns CSC 335: Object-Oriented Programming and Design.
Advanced Programming in Java
Advanced Programming in Java
Design Patterns: Brief Examples
Design Patterns Spring 2017.
MPCS – Advanced java Programming
The Singleton Pattern SE-2811 Dr. Mark L. Hornick.
Software Engineering Lecture 7 - Design Patterns
What is Singleton Category: Creational pattern
Singleton Pattern Pattern Name: Singleton Pattern Context
Singleton design pattern
Ms Munawar Khatoon IV Year I Sem Computer Science Engineering
Advanced Programming in Java
CS 350 – Software Design Singleton – Chapter 21
Design pattern Lecture 6.
5. Strategy, Singleton Patterns
Presentation transcript:

1 More OO Design Patterns CSC 335: Object-Oriented Programming and Design

2 Outline  Three Creational Design Patterns  Singleton  Factory

3 To use new or to not use new? That is the question.  Since most object-oriented languages provide object instantiation with new and initialization with constructors  There may be a tendency to simply use these facilities directly without forethought to future consequences  The overuse of this functionality often introduces inflexibility in the system

4 Creational Patterns  Creational patterns describe object-creation mechanisms that enable greater levels of reuse in evolving systems: Builder, Singleton, Prototype  The most widely used is Factory  This pattern calls for the use of a specialized object solely to create other objects

5 Recurring Problem Some classes have only one instance. For example, there may be many printers in a system, but there should be only one printer spooler How do we ensure that a class has only one instance and that instance is easily accessible? Solution Have constructor return the same instance when called multiple times Takes responsibility of managing that instance away from the programmer It is simply not possible to construct more instances OO Design Pattern Singleton

6 UML General form as UML (From

7 Java Code General Form // NOTE: This is not thread safe! public class Singleton { private static Singleton uniqueInstance; // other useful instance variables here private Singleton() {} public static Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } // other useful methods here }

8 Example Used in a final project names changed to protect identity /** This class is a DECORATOR of ArrayList. Its purpose is to make * sure there are no duplicate names anywhere in the universe. * That's why it's SINGLETON; because many classes use it but * there should be only one. */ public class NamesList implements Serializable { private ArrayList npcNames; private static NamesList self; private NamesList() { npcNames = new ArrayList (); } public static syncronized NamesList getInstance() { if (self == null) { self = new NamesList(); } return self; }

9 OO Design Pattern Factory Method  Name: Factory Method  Problem: A Client needs an object and it doesn't know which of several objects to instantiate  Solution: Let an object instantiate the correct object from several choices. The return type is an abstract class or an interface type.

10 Characteristics  A method returns an object  The return type is an abstract class or interface  The interface is implemented by two or more classes or the class is extended by two or more classes

11 Example from Java  Border is an interface Border  AbstractBorder is an abstract class that implements Border AbstractBorder  BorderFactory has a series of static methods returning different types that implement Border BorderFactory  This hides the implementation details of the subclasses  Factory methods such as createMatteBorder createEthedBorder createTitleBorder directly call constructors of the subclasses of AbstractBorder return priority + ":" + myText;

12 One type JFrame f = new JFrame(); f.setSize(250, 100); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel toBeBordered = new JPanel(); Border border = BorderFactory.createMatteBorder(2,1,5,9,Color.RED); toBeBordered.add(new JLabel("" + border.getClass())); toBeBordered.setBorder(border); f.getContentPane().add(toBeBordered); f.setVisible(true);

13 Another type JFrame f = new JFrame(); f.setSize(250, 100); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel toBeBordered = new JPanel(); Border border = BorderFactory.createEtchedBorder(); toBeBordered.add(new JLabel("" + border.getClass())); toBeBordered.setBorder(border); f.getContentPane().add(toBeBordered); f.setVisible(true);

14 Two others Border border = BorderFactory.createTitledBorder("Title"); Border border = BorderFactory.createLineBorder(Color.GREEN, 12);

15 Lots of Subclasses javax.swing.border.AbstractBorder java.lang.Object javax.swing.border.AbstractBorder All Implemented Interfaces: SerializableSerializable, BorderBorder Direct Known Subclasses: BasicBorders.ButtonBorderBasicBorders.ButtonBorder, BasicBorders.FieldBorder, BasicBorders.MarginBorder, BasicBorders.MenuBarBorder, BevelBorder, CompoundBorder, EmptyBorder, EtchedBorder, LineBorder, MetalBorders.ButtonBorder, MetalBorders.Flush3DBorder, MetalBorders.InternalFrameBorder, MetalBorders.MenuBarBorder, MetalBorders.MenuItemBorder, MetalBorders.OptionDialogBorder, MetalBorders.PaletteBorder, MetalBorders.PopupMenuBorder, MetalBorders.ScrollPaneBorder, MetalBorders.TableHeaderBorder, MetalBorders.ToolBarBorder, TitledBorderBasicBorders.FieldBorder BasicBorders.MarginBorderBasicBorders.MenuBarBorder BevelBorderCompoundBorderEmptyBorderEtchedBorder LineBorderMetalBorders.ButtonBorder MetalBorders.Flush3DBorderMetalBorders.InternalFrameBorder MetalBorders.MenuBarBorderMetalBorders.MenuItemBorder MetalBorders.OptionDialogBorderMetalBorders.PaletteBorder MetalBorders.PopupMenuBorderMetalBorders.ScrollPaneBorder MetalBorders.TableHeaderBorderMetalBorders.ToolBarBorder TitledBorder

16 NumberFormat, a factory  Objects can be returned without directly using new double amount = ; NumberFormat formatter = NumberFormat.getCurrencyInstance(); System.out.println(formatter.format(amount)); Output if the computer is set to US Locale $12, Use computer setting to Germany Locale and we get this: NumberFormat.getCurrencyInstance(Locale.GERMANY); ,12 €

17 What Happened?  getCurrencyInstance returns an instance of DecimalFormat where methods like setCurrency help build the appropriate object  It encapsulates the creation of objects  Can be useful if the creation process is complex, for example if it depends on settings in configuration files or the jre or the OS

18 Behind the scenes  Client: main method  Factory Method: getCurrencyInstance  Product: a properly configured instance of DecimalFormat  This is another example of Factory in use