parent
98ae4fe17a
commit
a31873c566
@ -0,0 +1,40 @@
|
|||||||
|
package com.msb.observer.v7;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:18
|
||||||
|
* @Description: com.msb.observer.v2
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Child
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:18
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Child {
|
||||||
|
|
||||||
|
private boolean cry = false;
|
||||||
|
private List<Observer> observers = new ArrayList<>();
|
||||||
|
|
||||||
|
{
|
||||||
|
observers.add(new Dad());
|
||||||
|
observers.add(new Mum());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCry() {
|
||||||
|
return cry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void wakeUp() {
|
||||||
|
this.cry = true;
|
||||||
|
WakeUpEvent event = new WakeUpEvent(LocalDateTime.now(), "bed", this);
|
||||||
|
for (Observer observer : observers) {
|
||||||
|
observer.actionOnWakeUp(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.msb.observer.v7;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:18
|
||||||
|
* @Description: com.msb.observer.v3
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Dad
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:18
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Dad implements Observer {
|
||||||
|
public void feed() {
|
||||||
|
System.out.println("孩子醒了,爸爸给孩子喂奶……");
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void actionOnWakeUp(WakeUpEvent event) {
|
||||||
|
if(event.getSource().isCry() && "hungry".equals(event.getLocation())) {
|
||||||
|
feed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.msb.observer.v7;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:18
|
||||||
|
* @Description: com.msb.observer.v3
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Dad
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:18
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Mum implements Observer {
|
||||||
|
public void hug() {
|
||||||
|
System.out.println("孩子醒了,妈妈抱抱孩子……");
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void actionOnWakeUp(WakeUpEvent event) {
|
||||||
|
if(event.getSource().isCry() && "bed".equals(event.getLocation())) {
|
||||||
|
hug();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.msb.observer.v7;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:33
|
||||||
|
* @Description: com.msb.observer.v5
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
public interface Observer {
|
||||||
|
public void actionOnWakeUp(WakeUpEvent event);
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.msb.observer.v7;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:28
|
||||||
|
* @Description: com.msb.observer.v4
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Observer04
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:28
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Observer07 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Child child = new Child();
|
||||||
|
child.wakeUp();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.msb.observer.v7;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:56
|
||||||
|
* @Description: com.msb.observer.v6
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName WakeUpEvent
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:56
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class WakeUpEvent {
|
||||||
|
private LocalDateTime localDateTime;
|
||||||
|
private String location;
|
||||||
|
private Child source;
|
||||||
|
|
||||||
|
public WakeUpEvent(LocalDateTime localDateTime, String location, Child source) {
|
||||||
|
this.localDateTime = localDateTime;
|
||||||
|
this.location = location;
|
||||||
|
this.source = source;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getLocalDateTime() {
|
||||||
|
return localDateTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLocation() {
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Child getSource() {
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.msb.observer.v8;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:18
|
||||||
|
* @Description: com.msb.observer.v2
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Child
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:18
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Child {
|
||||||
|
|
||||||
|
private boolean cry = false;
|
||||||
|
private List<Observer> observers = new ArrayList<>();
|
||||||
|
|
||||||
|
{
|
||||||
|
observers.add(new Dad());
|
||||||
|
observers.add(new Mum());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCry() {
|
||||||
|
return cry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void wakeUp() {
|
||||||
|
this.cry = true;
|
||||||
|
WakeUpEvent event = new WakeUpEvent(LocalDateTime.now(), "bed", this);
|
||||||
|
for (Observer observer : observers) {
|
||||||
|
observer.actionOnWakeUp(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.msb.observer.v8;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:18
|
||||||
|
* @Description: com.msb.observer.v3
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Dad
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:18
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Dad implements Observer {
|
||||||
|
public void feed() {
|
||||||
|
System.out.println("孩子醒了,爸爸给孩子喂奶……");
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void actionOnWakeUp(WakeUpEvent event) {
|
||||||
|
if(event.getSource().isCry() && "hungry".equals(event.getLocation())) {
|
||||||
|
feed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.msb.observer.v8;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/14 11:36
|
||||||
|
* @Description: com.msb.observer.v8
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Event
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/14 11:36
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public abstract class Event<T> {
|
||||||
|
public abstract T getSource();
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.msb.observer.v8;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:18
|
||||||
|
* @Description: com.msb.observer.v3
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Dad
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:18
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Mum implements Observer {
|
||||||
|
public void hug() {
|
||||||
|
System.out.println("孩子醒了,妈妈抱抱孩子……");
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void actionOnWakeUp(WakeUpEvent event) {
|
||||||
|
if(event.getSource().isCry() && "bed".equals(event.getLocation())) {
|
||||||
|
hug();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.msb.observer.v8;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:33
|
||||||
|
* @Description: com.msb.observer.v5
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
public interface Observer {
|
||||||
|
public void actionOnWakeUp(WakeUpEvent event);
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.msb.observer.v8;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:28
|
||||||
|
* @Description: com.msb.observer.v4
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Observer04
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:28
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Observer08 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Child child = new Child();
|
||||||
|
child.wakeUp();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.msb.observer.v8;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:56
|
||||||
|
* @Description: com.msb.observer.v6
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName WakeUpEvent
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:56
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class WakeUpEvent extends Event<Child> {
|
||||||
|
private LocalDateTime localDateTime;
|
||||||
|
private String location;
|
||||||
|
private Child source;
|
||||||
|
|
||||||
|
public WakeUpEvent(LocalDateTime localDateTime, String location, Child source) {
|
||||||
|
this.localDateTime = localDateTime;
|
||||||
|
this.location = location;
|
||||||
|
this.source = source;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getLocalDateTime() {
|
||||||
|
return localDateTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLocation() {
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Child getSource() {
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue