毕业季必看:7款AI论文神器实测,文理医工全覆盖,半天搞定毕业论文!
2025/12/17 21:53:47
在我们开发的过程中,经常会遇到一些当什么什么事情发生的时候,然后做什么什么事。比如某种商品的物价上涨时会导致部分商家高兴,而消费者伤心。
package com.demo.test.observe.abs; import java.util.ArrayList; import java.util.List; public abstract class Subject { private List<Observe> observeList = new ArrayList<>(); public void attach(Observe observe){ this.observeList.add(observe); }; public void detach(Observe observe){ this.observeList.remove(observe); }; public void allNotify(){ for(Observe observe:observeList){ observe.update(); } } }package com.demo.test.observe.abs; public abstract class Observe { public abstract void update(); }package com.demo.test.observe; import com.demo.test.observe.abs.Subject; import java.util.List; public class SubjectA extends Subject { }package com.demo.test.observe; import com.demo.test.observe.abs.Observe; public class StudentObserve extends Observe { public void update(){ System.out.println("老师来了,快坐好"); } }package com.demo.test.observe; import com.demo.test.observe.abs.Observe; public class StudentBObserve extends Observe { @Override public void update() { System.out.println("老师来了,别吃了"); } }package com.demo.test.observe; import com.demo.test.observe.abs.Observe; import com.demo.test.observe.abs.Subject; public class Client { public static void main(String[] args){ Subject subjectA = new SubjectA(); Observe studentObserve = new StudentObserve(); subjectA.attach(studentObserve); subjectA.attach(new StudentBObserve()); subjectA.allNotify(); } }package com.demo.test.observe.javaObserve; import java.util.Observable; public class Subject1 extends Observable { public void change(){ setChanged(); //如果不执行setChanged,就不会调用update函数。 } }package com.demo.test.observe.javaObserve; import java.util.Observable; import java.util.Observer; public class ObserveA implements Observer { @Override public void update(Observable o, Object arg) { System.out.println("java 自带观察者:A"); } }package com.demo.test.observe.javaObserve; import java.util.Observable; import java.util.Observer; public class ObserveB implements Observer { @Override public void update(Observable o, Object arg) { System.out.println("java 自带观察者:B"); } }package com.demo.test.observe.javaObserve; import java.util.Observable; import java.util.Observer; public class Client { public static void main(String[] args){ Subject1 subject = new Subject1(); Observer observerA = new ObserveA(); Observer observerB = new ObserveB(); subject.addObserver(observerA); subject.addObserver(observerB); //这一步主要调用里面的setChanged,否则update不执行。setChanged必须在Observable继承类内执行,因为它是protected修饰的。 subject.change(); subject.notifyObservers(); } }喜欢的朋友记得点赞、收藏、关注哦!!!