Mid GoF Patterns

Use Dependency Injection:?

  • Instead of directly instantiating the factory within the client code, you could

use dependency injection to pass the correct factory implementation into

the client code. This would make the code even more flexible and testable.

Visual Diagram:

+---------------------+

| LoggerFactory | <--- Abstract Factory

(Factory Method)

+---------------------+

+--------------------------+

| |

+-------------------+ +-------------------+

| FileLoggerFactory | | ConsoleLoggerFactory | <--- Concrete

Factories

+-------------------+ +-----------------------+

| |

+---------------+ +----------------+

| FileLogger | | ConsoleLogger | <--- Concrete

Products

Follow:

+---------------+ +----------------+

\ /

\ Client Code /

\_____________________/

Factory Interaction

  • The Factory Method pattern allows the client code to interact with the abstract

factory (LoggerFactory), which then returns the appropriate logger (FileLogger

or ConsoleLogger).

Conclusion:

The Factory Method Pattern offers a flexible and extensible solution for object creation,

especially in scenarios where the type of object to be created is determined at runtime. It

decouples the client code from specific classes, making it easier to extend and maintain.

Whether it's for logging systems, database connections, or UI components, this pattern

allows developers to create objects in a controlled and predictable manner, improving

scalability and maintainability.

Flyweight Pattern: Real-Time Example - Managing Graphic Objects in a

Game

Definition:

The Flyweight Pattern is designed to reduce the cost of creating and manipulating a large

number of similar objects. By sharing common parts of an object between multiple instances,

it saves memory and improves performance.

Use Case:

A typical use case for the Flyweight Pattern is in applications like games or text editors

that need to handle a large number of similar objects. For example, in a game with many

characters displayed on the screen, each character might be similar but would take up

unnecessary memory if each instance stored its own version of a character object. The

Flyweight pattern can be used to share the common properties (like the character symbol)

and only store unique ones (like the position).

Code Explanation:

Follow:

More from Design Patterns in C#

All questions for this course