Posts

Showing posts from July, 2026

Strategy Pattern

  Comparison of Modern C++ Approaches Implementation Type Mechanism Resolution Time Memory Overhead Use Case Runtime (Functional) std::function & Lambdas Runtime Small heap allocation (if lambda captures exceed small-buffer optimization) When algorithms must change on the fly during program execution. Compile-time (Static) Templates & Concepts ( requires ) Compile-time Zero runtime overhead (inlines perfectly) High-performance systems where strategies are known at compile time. Example 1: #include <bits/stdc++.h> class SortingStrategy { public: virtual void sort(std::vector<int>& arr) = 0; }; class BubbleSort : public SortingStrategy { public: void sort(std::vector<int>& arr) override { // Implement Bubble Sort algorithm } }; class QuickSort : public SortingStrategy { public: void sort(std::vector<int>& arr) override { // Implement Quick Sort algorithm } }; // Add more sorting algorithms as ne...

Flyweight Pattern

The Flyweight design pattern is a structural pattern designed to minimize memory usage by sharing as much data as possible with other similar objects. It divides an object's data into two categories: intrinsic state(heavy, constant, and shareable data) and extrinsic state (lightweight, unique, context-specific data) #include <iostream> #include <string> #include <string_view> #include <unordered_map> #include <vector> #include <memory> #include <shared_mutex> // 1. INTRINSIC STATE (The Flyweight) // This class contains heavy, immutable data shared across thousands of instances. class TreeModel { public: TreeModel(std::string name, std::string color, std::vector texture_data) : name_(std::move(name)), color_(std::move(color)), texture_bytes_(std::move(texture_data)) { std::cout texture_bytes_; // Simulates heavy mesh/texture data }; // 2. FLYWEIGHT FACTORY // Manages the shared pool of flyweights. It ensures obje...

Design Patterns

Creational: Factory Method (class) Abstract Factory (object) Builder  (object) Prototype  (object) Singleton  (object) Structral: Adapter (class/object) Bridge (object) Composite (object) Decorator  (object) Facade  (object) Flyweight   (object) Proxy  (object) Behavioral: Interpreter (class) Template Method (class) Chain of Responsibility (object) Command (object) Iterator (object) Mediator (object) Memento (object) Observer (object) State (object) Strategy (object) Visitor (object)