Skip to main content

Factory design pattern

The Factory Design Pattern in Java is a creational pattern used to encapsulate the object creation logic. It allows you to create objects without specifying the exact class name, promoting loose coupling and scalability.

Real-Life Example:

Consider a Shape Factory that can create different types of shapes like Circle, Rectangle, and Square.

Code Implementation:

Java code:

// Step 1: Define a common interface for all products interface Shape { void draw(); } // Step 2: Implement concrete classes for specific products class Circle implements Shape { @Override public void draw() { System.out.println("Drawing a Circle"); } } class Rectangle implements Shape { @Override public void draw() { System.out.println("Drawing a Rectangle"); } } class Square implements Shape { @Override public void draw() { System.out.println("Drawing a Square"); } } // Step 3: Create the Factory Class class ShapeFactory { // Factory method to create objects public static Shape getShape(String shapeType) { if (shapeType == null) { return null; } switch (shapeType.toLowerCase()) { case "circle": return new Circle(); case "rectangle": return new Rectangle(); case "square": return new Square(); default: throw new IllegalArgumentException("Unknown shape type: " + shapeType); } } } // Step 4: Client code public class FactoryPatternDemo { public static void main(String[] args) { // Using the factory to create shapes Shape shape1 = ShapeFactory.getShape("Circle"); shape1.draw(); // Output: Drawing a Circle Shape shape2 = ShapeFactory.getShape("Rectangle"); shape2.draw(); // Output: Drawing a Rectangle Shape shape3 = ShapeFactory.getShape("Square"); shape3.draw(); // Output: Drawing a Square } }

How It Works:

    1. Interface/Abstract Class: The Shape interface provides a common contract for all shapes.
    2. Concrete Classes: Circle, Rectangle, and Square are concrete implementations of the Shape interface.
    3.Factory Class: ShapeFactory centralizes the object creation logic. The client specifies the desired shape type, and the factory produces the corresponding object.

Advantages:
    
    1.Encapsulation: The instantiation logic is encapsulated in the factory, making the client code simpler.
    2.Scalability: Adding new shapes (e.g., Triangle) requires only updating the factory, not the client code.
    3.Loose Coupling: The client depends on the interface (Shape), not the concrete classes.

Comments

Popular posts from this blog

equals method of object class in java

  In Java, the equals method is a fundamental method inherited by all classes from the Object class.           Here’s an explanation of the equals method: Purpose: The equals method is used to compare two objects to determine if they are logically equivalent. By default, the implementation in the Object class checks if the two object references point to the same memory location (i.e., if they are the same instance). Signature : public boolean equals(Object obj) Explanation: Method Override: Classes can override the equals method to provide their own definition of object equality based on their specific needs. When overriding, the method should adhere to certain principles to ensure consistency and correctness of equality comparisons. Default Behavior (from Object class): The default implementation in the Object class checks if the two object references ( this and obj ) refer to the exact same object in memory using the == operator: public boo...

What is static keyword in java

 Static variable: If we want to share the value of any field or variable inside all the instances of class then we should declare that variable as static. In above diagram we see that e1 and e2 are two objects of class Employee. they share the static variable companyName.  Static variables are also called as Class Variables because its copy gets shared between all the objects of same class.   Static variable gets space in method area at the time of class loading.   We can access static variables using object reference but it is designed to access using class name and dot operator.   Example:   Employee employee=new Employee(); object creation  System.out.println(“Company name:”+Employee.CompanyName): ok System.out.println(“Company name:”+employee.CompanyName): Ok  staticmethod

What is real use of interface: mostly asked interview question

Actually in real project development interfaces are use to write business logic code . Also Interfaces in java are powerful tools that allow you to define a contract for what a class can do, without specifying how it does it. it means we can give method declaration in interface and what that method does actually that responsibility is given to the class which is going to implement that class. They are used for several real-world purposes like enabling polymorphism , creating loosely coupled systems , and defining common behaviors across different classes . Real-World Use of Interfaces Let's look at some practical scenarios where interfaces are commonly used: 1. Multiple Inheritance (via Interfaces):  Java doesn't support multiple inheritance with classes, but it allows multiple inheritance with interfaces. This allows a class to implement multiple interfaces, enabling it to inherit behaviors from more than one source. 2. Polymorphism: Interfaces allow you to treat different o...