parent
32b0fa6c52
commit
98ae4fe17a
@ -0,0 +1,22 @@
|
|||||||
|
package com.msb.observer.v1;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:05
|
||||||
|
* @Description: com.msb.observer
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Observer01
|
||||||
|
*@Description 面向过程的方式
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:05
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Observer01 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
boolean cry = false;
|
||||||
|
while ( ! cry) {
|
||||||
|
System.out.println("继续观察……");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.msb.observer.v2;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:18
|
||||||
|
* @Description: com.msb.observer.v2
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Child
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:18
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Child {
|
||||||
|
private boolean cry = false;
|
||||||
|
|
||||||
|
public boolean isCry() {
|
||||||
|
return cry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void wakeUp() {
|
||||||
|
this.cry = true;
|
||||||
|
System.out.println("孩子醒了……");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.msb.observer.v2;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:09
|
||||||
|
* @Description: com.msb.observer
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Observer02
|
||||||
|
*@Description 披着面向对象的外衣面向过程
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:09
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Observer02 {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Child child = new Child();
|
||||||
|
while ( ! child.isCry()) {
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
System.out.println("孩子还没有醒,继续观察……");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package com.msb.observer.v3;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:18
|
||||||
|
* @Description: com.msb.observer.v2
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Child
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:18
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Child {
|
||||||
|
|
||||||
|
private boolean cry = false;
|
||||||
|
private Dad dad = new Dad();
|
||||||
|
|
||||||
|
public boolean isCry() {
|
||||||
|
return cry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void wakeUp() {
|
||||||
|
this.cry = true;
|
||||||
|
dad.feed();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.msb.observer.v3;/**
|
||||||
|
* @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 {
|
||||||
|
public void feed() {
|
||||||
|
System.out.println("孩子醒了,爸爸给孩子喂奶……");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.msb.observer.v3;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:15
|
||||||
|
* @Description: com.msb.observer
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Observer03
|
||||||
|
*@Description 添加一个观察者
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:15
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Observer03 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Child child = new Child();
|
||||||
|
child.wakeUp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.msb.observer.v4;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:18
|
||||||
|
* @Description: com.msb.observer.v2
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.msb.observer.v3.Dad;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Child
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:18
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Child {
|
||||||
|
|
||||||
|
private boolean cry = false;
|
||||||
|
private com.msb.observer.v3.Dad dad = new Dad();
|
||||||
|
private Mum mum = new Mum();
|
||||||
|
private Dog dog = new Dog();
|
||||||
|
|
||||||
|
public boolean isCry() {
|
||||||
|
return cry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void wakeUp() {
|
||||||
|
this.cry = true;
|
||||||
|
dad.feed();
|
||||||
|
mum.hug();
|
||||||
|
dog.wang();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.msb.observer.v4;/**
|
||||||
|
* @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 {
|
||||||
|
public void feed() {
|
||||||
|
System.out.println("孩子醒了,爸爸给孩子喂奶……");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.msb.observer.v4;/**
|
||||||
|
* @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 Dog {
|
||||||
|
public void wang() {
|
||||||
|
System.out.println("孩子醒了,狗叫……");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.msb.observer.v4;/**
|
||||||
|
* @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 {
|
||||||
|
public void hug() {
|
||||||
|
System.out.println("孩子醒了,妈妈宝宝孩子……");
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.msb.observer.v4;/**
|
||||||
|
* @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 Observer04 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Child child = new Child();
|
||||||
|
child.wakeUp();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.msb.observer.v5;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:18
|
||||||
|
* @Description: com.msb.observer.v2
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.msb.chain.ColliderChain;
|
||||||
|
import com.msb.observer.v4.Dog;
|
||||||
|
|
||||||
|
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;
|
||||||
|
for (Observer observer : observers) {
|
||||||
|
observer.actionOnWakeUp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.msb.observer.v5;/**
|
||||||
|
* @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() {
|
||||||
|
feed();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.msb.observer.v5;/**
|
||||||
|
* @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() {
|
||||||
|
hug();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.msb.observer.v5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:33
|
||||||
|
* @Description: com.msb.observer.v5
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
public interface Observer {
|
||||||
|
public void actionOnWakeUp();
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.msb.observer.v5;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/13 19:28
|
||||||
|
* @Description: com.msb.observer.v4
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.msb.observer.v5.Child;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Observer04
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/13 19:28
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Observer05 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Child child = new Child();
|
||||||
|
child.wakeUp();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.msb.observer.v6;/**
|
||||||
|
* @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");
|
||||||
|
for (Observer observer : observers) {
|
||||||
|
observer.actionOnWakeUp(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.msb.observer.v6;/**
|
||||||
|
* @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("hungry".equals(event.getLocation())) {
|
||||||
|
feed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.msb.observer.v6;/**
|
||||||
|
* @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("bed".equals(event.getLocation())) {
|
||||||
|
hug();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.msb.observer.v6;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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.v6;/**
|
||||||
|
* @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 Observer06 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Child child = new Child();
|
||||||
|
child.wakeUp();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.msb.observer.v6;/**
|
||||||
|
* @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;
|
||||||
|
|
||||||
|
public WakeUpEvent(LocalDateTime localDateTime, String location) {
|
||||||
|
this.localDateTime = localDateTime;
|
||||||
|
this.location = location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDateTime getLocalDateTime() {
|
||||||
|
return localDateTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLocation() {
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue