From 4bff372ad3c835a757c23d1e337defff4768913a Mon Sep 17 00:00:00 2001 From: mehmet Date: Mon, 25 May 2026 00:55:54 +0300 Subject: [PATCH] first issue --- .classpath | 10 ++++++++ .gitignore | 17 ++++---------- .project | 17 ++++++++++++++ .settings/org.eclipse.core.resources.prefs | 2 ++ .settings/org.eclipse.jdt.core.prefs | 14 +++++++++++ src/mmk/patterns/oberver/Amazon.java | 27 ++++++++++++++++++++++ src/mmk/patterns/oberver/App.java | 23 ++++++++++++++++++ src/mmk/patterns/oberver/Observer.java | 5 ++++ src/mmk/patterns/oberver/Product.java | 27 ++++++++++++++++++++++ src/mmk/patterns/oberver/UserObserver.java | 22 ++++++++++++++++++ 10 files changed, 152 insertions(+), 12 deletions(-) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 src/mmk/patterns/oberver/Amazon.java create mode 100644 src/mmk/patterns/oberver/App.java create mode 100644 src/mmk/patterns/oberver/Observer.java create mode 100644 src/mmk/patterns/oberver/Product.java create mode 100644 src/mmk/patterns/oberver/UserObserver.java 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; + } +}