[go: up one dir, main page]

0% found this document useful (0 votes)
64 views6 pages

Object:: Design Patterns Capture Software Architecture and Design

This document describes the factory design pattern. It defines the factory pattern as providing a way to create objects while hiding the creation logic and giving flexibility in deciding which objects need to be created. The document provides an example of using a factory to create different shape objects like circle, rectangle, and square. It then provides code to implement the factory pattern with Java by defining a shape interface, concrete shape classes, a shape factory class, and a demo class to get shape objects from the factory.

Uploaded by

sanober shahin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views6 pages

Object:: Design Patterns Capture Software Architecture and Design

This document describes the factory design pattern. It defines the factory pattern as providing a way to create objects while hiding the creation logic and giving flexibility in deciding which objects need to be created. The document provides an example of using a factory to create different shape objects like circle, rectangle, and square. It then provides code to implement the factory pattern with Java by defining a shape interface, concrete shape classes, a shape factory class, and a demo class to get shape objects from the factory.

Uploaded by

sanober shahin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

Lab # 1

Object: Introduction to design pattern, creational Design pattern (Factory pattern)


Design Patterns capture software architecture and design

Theory:
Software Architecture:

it refers to the high level structure of software system

Logical View Development View

Scenario

Process View Physical View

Architecture is an artifact for early analysis to make sure that a design will yield an acceptable system.
System Design is process of implementing software solution to one or more set of problem.

Two following principle of Object Oriented Design


1) Program to an interface not an implementation.

a) Rely on abstract class and interface to hide differences subclasses from clients

b) interface defines an object's use.

Implementation defines particular policy

2) Favor object composition over inheritance

Types of Design Patterns

23 designs patterns which are classified in 3categories

1. Creational
2. Structural
3. Behavioral

Creational Patterns

Provides a way to create objects while hiding the creation logic rather than instantiating object directly using a
new operator.

this gives more flexibility to program in deciding which objects needs to be created for a given use case.
1. Factory Pattern
2. Singleton Design Pattern
3. Builder Design Pattern

Factory Pattern

Define an inheritance for creating a single object but let subclass decide which class to instantiate

one of the best way to create an object

In Factory pattern, we create object without exposing the creation logic to the client and refer to
newly created object using a common interface.

Application

A graphical application works with shapes.

In our implementation the drawing framework is the client and the shapes are the products.

All the shapes are derived from an abstract shape class (or interface).

The Shape class defines the draw and move operations which must be implemented by the concrete shapes.

Let's assume a command is selected from the menu to create a new Circle.

The framework receives the shape type as a string parameter, it asks the factory to create a new shape sending
the parameter received from menu.

The factory creates a new circle and returns it to the framework, casted to an abstract shape.

Then the framework uses the object as casted to the abstract class without being aware of the concrete object
type.
Exercise

Code the given Class Diagram

We're going to create a Shape interface and concrete classes implementing the Shape interface. A factory class
ShapeFactory is defined as a next step.
FactoryPatternDemo, our demo class will use ShapeFactory to get a Shape object. It will pass information (CIRCLE
/ RECTANGLE / SQUARE) to ShapeFactory to get the type of object it needs.

Step 1
Create an interface.

Shape.java

public interface Shape {

void draw();

Step 2
Create concrete classes implementing the same interface.

Rectangle.java

public class Rectangle implements Shape {

@Override

public void draw() {

System.out.println("Inside Rectangle::draw() method.");


}

Square.java

public class Square implements Shape {

@Override

public void draw() {

System.out.println("Inside Square::draw() method.");

Circle.java

public class Circle implements Shape {

@Override

public void draw() {

System.out.println("Inside Circle::draw() method.");

Step 3
Create a Factory to generate object of concrete class based on given information.

ShapeFactory.java

public class ShapeFactory {

//use getShape method to get object of type shape

public Shape getShape(String shapeType){

if(shapeType == null){

return null;

if(shapeType.equalsIgnoreCase("CIRCLE")){

return new Circle();

} else if(shapeType.equalsIgnoreCase("RECTANGLE")){

return new Rectangle();


} else if(shapeType.equalsIgnoreCase("SQUARE")){

return new Square();

return null;

Step 4
Use the Factory to get object of concrete class by passing an information such as type.

FactoryPatternDemo.java

public class FactoryPatternDemo {

public static void main(String[] args) {

ShapeFactory shapeFactory = new ShapeFactory();

//get an object of Circle and call its draw method.

Shape shape1 = shapeFactory.getShape("CIRCLE");

//call draw method of Circle

shape1.draw();

//get an object of Rectangle and call its draw method.

Shape shape2 = shapeFactory.getShape("RECTANGLE");

//call draw method of Rectangle

shape2.draw();

//get an object of Square and call its draw method.

Shape shape3 = shapeFactory.getShape("SQUARE");

//call draw method of circle

shape3.draw();

}
Step 5
Verify the output.

Inside Circle::draw() method.


Inside Rectangle::draw() method.
Inside Square::draw() method.

You might also like