diff --git a/src/main/java/observer/Child.java b/src/main/java/observer/Child.java new file mode 100644 index 0000000..e86f7cf --- /dev/null +++ b/src/main/java/observer/Child.java @@ -0,0 +1,32 @@ +package observer; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class Child { + private boolean cry = false; + private static List observers = new ArrayList<>(); + static { + observers.add(new Dad()); + observers.add(new Mom()); + observers.add(new Dog()); + } + + public void weakUp(){ + System.out.println("child weak up..."); + WeakUpEvent event = new WeakUpEvent(new Date(), "bed", this); + for (Observer observer : observers){ + observer.actionOnWeakUp(event); + } + cry = true; + } + + public boolean isCry() { + return cry; + } + + public void setCry(boolean cry) { + this.cry = cry; + } +} diff --git a/src/main/java/observer/Dad.java b/src/main/java/observer/Dad.java new file mode 100644 index 0000000..253c6de --- /dev/null +++ b/src/main/java/observer/Dad.java @@ -0,0 +1,12 @@ +package observer; + +public class Dad implements Observer{ + public void feed(){ + System.out.println("Dad feed child..."); + } + + @Override + public void actionOnWeakUp(WeakUpEvent event) { + feed(); + } +} diff --git a/src/main/java/observer/Dog.java b/src/main/java/observer/Dog.java new file mode 100644 index 0000000..5e5ca22 --- /dev/null +++ b/src/main/java/observer/Dog.java @@ -0,0 +1,12 @@ +package observer; + +public class Dog implements Observer{ + public void bark(){ + System.out.println("Dog barking..."); + } + + @Override + public void actionOnWeakUp(WeakUpEvent event) { + bark(); + } +} diff --git a/src/main/java/observer/Main.java b/src/main/java/observer/Main.java new file mode 100644 index 0000000..4fb67a3 --- /dev/null +++ b/src/main/java/observer/Main.java @@ -0,0 +1,8 @@ +package observer; + +public class Main { + public static void main(String[] args) { + Child child = new Child(); + child.weakUp(); + } +} diff --git a/src/main/java/observer/Mom.java b/src/main/java/observer/Mom.java new file mode 100644 index 0000000..dd04a01 --- /dev/null +++ b/src/main/java/observer/Mom.java @@ -0,0 +1,12 @@ +package observer; + +public class Mom implements Observer{ + public void hug(){ + System.out.println("Mom hug child..."); + } + + @Override + public void actionOnWeakUp(WeakUpEvent event) { + hug(); + } +} diff --git a/src/main/java/observer/Observer.java b/src/main/java/observer/Observer.java new file mode 100644 index 0000000..15c858d --- /dev/null +++ b/src/main/java/observer/Observer.java @@ -0,0 +1,5 @@ +package observer; + +public interface Observer { + void actionOnWeakUp(WeakUpEvent event); +} diff --git a/src/main/java/observer/WeakUpEvent.java b/src/main/java/observer/WeakUpEvent.java new file mode 100644 index 0000000..7003519 --- /dev/null +++ b/src/main/java/observer/WeakUpEvent.java @@ -0,0 +1,35 @@ +package observer; + +import java.util.Date; + +public class WeakUpEvent { + private Date time; + private String location; + private Child source; + + public WeakUpEvent(Date time, String location, Child source) { + this.time = time; + this.location = location; + this.source = source; + } + + public Date getTime() { + return time; + } + + public void setTime(Date time) { + this.time = time; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public Child getSource() { + return source; + } +}