diff --git a/design_patterns/configuration_management/config.yaml b/design_patterns/configuration_management/config.yaml
new file mode 100644
index 000000000000..ef7bc4813438
--- /dev/null
+++ b/design_patterns/configuration_management/config.yaml
@@ -0,0 +1,10 @@
+global:
+ db_url: "jdbc:mysql://localhost:3306/main"
+ jwt_secret: "default_secret"
+ vault_key: "global_vault_key"
+
+services:
+ serviceA:
+ jwt_secret: "serviceA_secret"
+ serviceB:
+ db_url: "jdbc:postgresql://localhost:5432/serviceB"
diff --git a/design_patterns/configuration_management/pom.xml b/design_patterns/configuration_management/pom.xml
new file mode 100644
index 000000000000..049aa37b13db
--- /dev/null
+++ b/design_patterns/configuration_management/pom.xml
@@ -0,0 +1,47 @@
+
+
+ 4.0.0
+
+ com.thealgorithms
+ configuration-management-example
+ 1.0-SNAPSHOT
+ jar
+
+
+ 21
+ UTF-8
+
+
+
+
+ org.yaml
+ snakeyaml
+ 2.1
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.14.1
+
+ ${maven.compiler.release}
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 3.1.0
+
+ org.thealgorithms.config.ExampleUsage
+
+
+
+
+
diff --git a/design_patterns/configuration_management/src/main/java/org/thealgorithms/config/ConfigLoader.java b/design_patterns/configuration_management/src/main/java/org/thealgorithms/config/ConfigLoader.java
new file mode 100644
index 000000000000..864ef56c9186
--- /dev/null
+++ b/design_patterns/configuration_management/src/main/java/org/thealgorithms/config/ConfigLoader.java
@@ -0,0 +1,46 @@
+package org.thealgorithms.config;
+
+import org.yaml.snakeyaml.Yaml;
+import java.io.InputStream;
+import java.util.Map;
+
+/**
+ * ConfigLoader reads configuration from a shared YAML file.
+ * It supports global and service-specific configurations.
+ */
+public class ConfigLoader {
+
+ private final Map config;
+
+ public ConfigLoader(String filename) {
+ Yaml yaml = new Yaml();
+ try (InputStream in = ConfigLoader.class.getClassLoader().getResourceAsStream(filename)) {
+ if (in == null) {
+ throw new IllegalArgumentException("Configuration file not found: " + filename);
+ }
+ config = yaml.load(in);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to load configuration: " + e.getMessage(), e);
+ }
+ }
+
+ /**
+ * Returns the value of a global config key.
+ */
+ public Object getGlobal(String key) {
+ Map global = (Map) config.get("global");
+ return global != null ? global.get(key) : null;
+ }
+
+ /**
+ * Returns a value for a specific service override.
+ */
+ public Object getServiceOverride(String service, String key) {
+ Map> services =
+ (Map>) config.get("services");
+ if (services == null || !services.containsKey(service)) {
+ return null;
+ }
+ return services.get(service).getOrDefault(key, getGlobal(key));
+ }
+}
diff --git a/design_patterns/configuration_management/src/main/java/org/thealgorithms/config/ExampleUsage.java b/design_patterns/configuration_management/src/main/java/org/thealgorithms/config/ExampleUsage.java
new file mode 100644
index 000000000000..927fe36a8653
--- /dev/null
+++ b/design_patterns/configuration_management/src/main/java/org/thealgorithms/config/ExampleUsage.java
@@ -0,0 +1,14 @@
+package org.thealgorithms.config;
+
+/**
+ * Demonstrates how to use ConfigLoader with a shared YAML file.
+ */
+public class ExampleUsage {
+ public static void main(String[] args) {
+ ConfigLoader loader = new ConfigLoader("config.yaml");
+
+ System.out.println("Global DB URL: " + loader.getGlobal("db_url"));
+ System.out.println("Service A JWT Secret: " + loader.getServiceOverride("serviceA", "jwt_secret"));
+ System.out.println("Service B DB URL: " + loader.getServiceOverride("serviceB", "db_url"));
+ }
+}