diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..57bca72
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
index 9154f4c..17278eb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,16 +1,11 @@
-# ---> Java
-# Compiled class file
+# Java
+target/
+bin/
*.class
# Log file
*.log
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
# Package Files #
*.jar
*.war
@@ -20,7 +15,5 @@
*.tar.gz
*.rar
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-replay_pid*
-
+# do NOT ignores
+!lib/*
diff --git a/.project b/.project
new file mode 100644
index 0000000..3640c48
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ exampleObserverPattern
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8c9943d
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,14 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=17
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=17
diff --git a/src/mmk/patterns/oberver/Amazon.java b/src/mmk/patterns/oberver/Amazon.java
new file mode 100644
index 0000000..ab6af18
--- /dev/null
+++ b/src/mmk/patterns/oberver/Amazon.java
@@ -0,0 +1,27 @@
+package mmk.patterns.oberver;
+
+import java.util.HashMap;
+
+public class Amazon {
+
+ private HashMap observers = new HashMap();
+
+ public void register(Observer observer, Product product) {
+ observers.put(observer, product);
+ }
+
+ public void unRegister(Observer observer) {
+ observers.remove(observer);
+ }
+
+ public void notifyAllObservers() {
+ observers.forEach((k, v) -> k.stockUpdate(v));
+ }
+
+ public void notifyForProductName(String productName) {
+ observers.forEach((k, v) -> {
+ if(v.getName().equals(productName))
+ k.stockUpdate(v);
+ });
+ }
+}
diff --git a/src/mmk/patterns/oberver/App.java b/src/mmk/patterns/oberver/App.java
new file mode 100644
index 0000000..cbed898
--- /dev/null
+++ b/src/mmk/patterns/oberver/App.java
@@ -0,0 +1,23 @@
+package mmk.patterns.oberver;
+
+public class App {
+
+ public static void main(String[] args) {
+
+ var amazon = new Amazon();
+ var samsung = new Product("Samsung S23", 1000);
+ var apple = new Product("Apple 14", 2000);
+ var aliObserver = new UserObserver("Ali");
+ var zeynepObserver = new UserObserver("Zeynep");
+
+ amazon.register(aliObserver, samsung);
+ amazon.register(zeynepObserver, apple);
+
+ amazon.notifyForProductName("Apple 14");
+
+ System.out.println("------------------------------");
+
+ amazon.notifyAllObservers();
+ }
+
+}
diff --git a/src/mmk/patterns/oberver/Observer.java b/src/mmk/patterns/oberver/Observer.java
new file mode 100644
index 0000000..7464510
--- /dev/null
+++ b/src/mmk/patterns/oberver/Observer.java
@@ -0,0 +1,5 @@
+package mmk.patterns.oberver;
+
+public interface Observer {
+ void stockUpdate(Product product);
+}
diff --git a/src/mmk/patterns/oberver/Product.java b/src/mmk/patterns/oberver/Product.java
new file mode 100644
index 0000000..5358a6f
--- /dev/null
+++ b/src/mmk/patterns/oberver/Product.java
@@ -0,0 +1,27 @@
+package mmk.patterns.oberver;
+
+public class Product {
+ private String name;
+ private double price;
+
+ public Product(String name, double price) {
+ super();
+ this.name = name;
+ this.price = price;
+ }
+
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public double getPrice() {
+ return price;
+ }
+ public void setPrice(double price) {
+ this.price = price;
+ }
+
+
+}
diff --git a/src/mmk/patterns/oberver/UserObserver.java b/src/mmk/patterns/oberver/UserObserver.java
new file mode 100644
index 0000000..b4db8ff
--- /dev/null
+++ b/src/mmk/patterns/oberver/UserObserver.java
@@ -0,0 +1,22 @@
+package mmk.patterns.oberver;
+
+public class UserObserver implements Observer{
+
+ private String fullName;
+
+ public UserObserver(String fullName) {
+ super();
+ this.fullName = fullName;
+ }
+
+ public void stockUpdate(Product product) {
+ System.out.printf("Dear %s, Product called %s has been in stock anymore!\n", fullName, product.getName());
+ }
+
+ public String getFullName() {
+ return fullName;
+ }
+ public void setFullName(String fullName) {
+ this.fullName = fullName;
+ }
+}