java 设计模式之观察者模式

mac2025-07-18  3

概述 观察者模式分为以下两个角色 观察者和观察者 观察者模式顾名思义就是观察者监控被观察着的某一行为做出某种反应,比如某个人在野外烧水喝,需要温度达到100摄氏度才能喝,这个时候可以去实时观察温度计来判断当前水是否烧开,此时温度计就是被观察者,而是否烧开是判断条件他也是一种行为。

实践

首先我们要定义一个接口,这个接口定义一个方法,该方法就是我们要监视的行为 package com.skindow.designPtterns.observerMode; /** * Created by skindow on 2019/11/1. */ public interface Behavior { void temperature(Integer i); } 新建观察者,观察者可以是多个,为了观察效果这里我新建了两个观察者,观察者需要去实现以上接口 package com.skindow.designPtterns.observerMode; import lombok.extern.slf4j.Slf4j; /** * Created by skindow on 2019/11/1. */ public class Person_1 implements Behavior { @Override public void temperature(Integer i) { if (i == 100) { System.out.println("【" + this.getClass().getName() + "】通过观察温度计发现水已经烧开了!"); } else { System.out.println("【" + this.getClass().getName() + "】通过观察温度计此时温度计为 "+ i + "度!"); } } } package com.skindow.designPtterns.observerMode; import lombok.extern.slf4j.Slf4j; /** * Created by skindow on 2019/11/1. */ @Slf4j public class Person_2 implements Behavior { @Override public void temperature(Integer i) { if (i == 100) { System.out.println("【" + this.getClass().getName() + "】通过观察温度计发现水已经烧开了!"); } else { System.out.println("【" + this.getClass().getName() + "】通过观察温度计此时温度计为 "+ i + "度!"); } } } 新建被观察者,当然被观察者也可以是多个,被观察者主要是通知观察者某些信息,就是调用观察者的方法 package com.skindow.designPtterns.observerMode; import java.util.ArrayList; import java.util.List; /** * Created by skindow on 2019/11/1. */ public class Thermometer { private List<Behavior> list = new ArrayList<>(); public Thermometer() { } public void addPerson(Behavior behavior) { list.add(behavior); } public void notifyAllPerson(Integer i) { for (Behavior behavior : list) { behavior.temperature(i); } } } 实验 package com.skindow.designPtterns.observerMode; /** * Created by skindow on 2019/11/1. */ public class main { public static void main(String[] args) { Person_1 person_1 = new Person_1(); Person_2 person_2 = new Person_2(); Thermometer thermometer = new Thermometer(); thermometer.addPerson(person_1); thermometer.addPerson(person_2); for (int i = 0; i <= 100 ; i ++) { thermometer.notifyAllPerson(i); } } }

以下为打印的信息

"C:\Program Files (x86)\Java\jdk1.8.0_131\bin\java" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:54141,suspend=y,server=n -Dfile.encoding=UTF-8 -classpath "C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\charsets.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\deploy.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\access-bridge-32.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\cldrdata.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\dnsns.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\jaccess.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\jfxrt.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\localedata.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\nashorn.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\sunec.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\sunjce_provider.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\sunmscapi.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\sunpkcs11.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\zipfs.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\javaws.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\jce.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\jfr.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\jfxswt.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\jsse.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\management-agent.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\plugin.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\resources.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\rt.jar;C:\D\myProject\myfirstSpringboot\skindow-parent\target\classes;C:\Users\skindow\.m2\repository\org\springframework\boot\spring-boot-starter\2.1.7.RELEASE\spring-boot-starter-2.1.7.RELEASE.jar;C:\Users\skindow\.m2\repository\org\springframework\boot\spring-boot\2.1.7.RELEASE\spring-boot-2.1.7.RELEASE.jar;C:\Users\skindow\.m2\repository\org\springframework\spring-context\5.1.9.RELEASE\spring-context-5.1.9.RELEASE.jar;C:\Users\skindow\.m2\repository\org\springframework\spring-aop\5.1.9.RELEASE\spring-aop-5.1.9.RELEASE.jar;C:\Users\skindow\.m2\repository\org\springframework\spring-beans\5.1.9.RELEASE\spring-beans-5.1.9.RELEASE.jar;C:\Users\skindow\.m2\repository\org\springframework\spring-expression\5.1.9.RELEASE\spring-expression-5.1.9.RELEASE.jar;C:\Users\skindow\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.1.7.RELEASE\spring-boot-autoconfigure-2.1.7.RELEASE.jar;C:\Users\skindow\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.1.7.RELEASE\spring-boot-starter-logging-2.1.7.RELEASE.jar;C:\Users\skindow\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\skindow\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\skindow\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.11.2\log4j-to-slf4j-2.11.2.jar;C:\Users\skindow\.m2\repository\org\apache\logging\log4j\log4j-api\2.11.2\log4j-api-2.11.2.jar;C:\Users\skindow\.m2\repository\org\slf4j\jul-to-slf4j\1.7.26\jul-to-slf4j-1.7.26.jar;C:\Users\skindow\.m2\repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;C:\Users\skindow\.m2\repository\org\springframework\spring-core\5.1.9.RELEASE\spring-core-5.1.9.RELEASE.jar;C:\Users\skindow\.m2\repository\org\springframework\spring-jcl\5.1.9.RELEASE\spring-jcl-5.1.9.RELEASE.jar;C:\Users\skindow\.m2\repository\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;C:\Users\skindow\.m2\repository\org\projectlombok\lombok\1.18.8\lombok-1.18.8.jar;C:\Users\skindow\.m2\repository\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;C:\D\IntelliJ IDEA 2017.1.4\lib\idea_rt.jar" com.skindow.designPtterns.observerMode.main Connected to the target VM, address: '127.0.0.1:54141', transport: 'socket' 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 0度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 0度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 1度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 1度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 2度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 2度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 3度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 3度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 4度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 4度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 5度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 5度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 6度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 6度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 7度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 7度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 8度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 8度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 9度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 9度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 10度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 10度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 11度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 11度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 12度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 12度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 13度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 13度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 14度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 14度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 15度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 15度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 16度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 16度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 17度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 17度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 18度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 18度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 19度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 19度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 20度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 20度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 21度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 21度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 22度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 22度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 23度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 23度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 24度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 24度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 25度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 25度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 26度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 26度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 27度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 27度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 28度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 28度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 29度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 29度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 30度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 30度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 31度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 31度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 32度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 32度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 33度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 33度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 34度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 34度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 35度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 35度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 36度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 36度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 37度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 37度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 38度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 38度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 39度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 39度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 40度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 40度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 41度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 41度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 42度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 42度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 43度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 43度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 44度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 44度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 45度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 45度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 46度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 46度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 47度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 47度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 48度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 48度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 49度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 49度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 50度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 50度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 51度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 51度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 52度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 52度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 53度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 53度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 54度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 54度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 55度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 55度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 56度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 56度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 57度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 57度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 58度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 58度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 59度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 59度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 60度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 60度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 61度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 61度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 62度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 62度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 63度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 63度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 64度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 64度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 65度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 65度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 66度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 66度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 67度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 67度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 68度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 68度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 69度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 69度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 70度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 70度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 71度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 71度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 72度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 72度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 73度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 73度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 74度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 74度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 75度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 75度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 76度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 76度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 77度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 77度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 78度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 78度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 79度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 79度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 80度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 80度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 81度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 81度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 82度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 82度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 83度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 83度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 84度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 84度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 85度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 85度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 86度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 86度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 87度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 87度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 88度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 88度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 89度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 89度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 90度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 90度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 91度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 91度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 92度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 92度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 93度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 93度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 94度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 94度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 95度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 95度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 96度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 96度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 97度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 97度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 98度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 98度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计此时温度计为 99度! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计此时温度计为 99度! 【com.skindow.designPtterns.observerMode.Person_1】通过观察温度计发现水已经烧开了! 【com.skindow.designPtterns.observerMode.Person_2】通过观察温度计发现水已经烧开了! Disconnected from the target VM, address: '127.0.0.1:54141', transport: 'socket' Process finished with exit code 0

总结:

观察者模式主要是观察某个场景的某种变化,然后做出相应的处理管擦着模式可以有多个观察者对应多个被观察者,也可以某几个观察者去观察某几个被观察者,这里就不多介绍了,两者的关系可以灵活多变,需要根据场景做出合理的搭配。
最新回复(0)