zoukankan      html  css  js  c++  java
  • 观察者模式(observer)

    Observer Pattern:

    Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.

    Frequency of use: high

    Participants:
    1.Subject
    2.Observer
    3.ConcreteSubject
    4.ConcreteObserver

    (1)Subject

    import java.util.*;
    public abstract class Subject
    {
    	protected ArrayList observers = new ArrayList();
    	public abstract void attach(Observer observer);
    	public abstract void detach(Observer observer);
    	public abstract void notify();
    } 
    

    (2)Observer

    public interface Observer
    {
    	public void update();
    } 

    (3)ConcreteSubject

    public class ConcreteSubject extends Subject
    {
    	public void attach(Observer observer)
    	{
    		observers.add(observer);
    	}
    	
    	public void detach(Observer observer)
    	{
    		observers.remove(observer);
    	}
    	
    	public void notify()
    	{
    		for(Object obs:observers)
    		{
    			((Observer)obs).update();
    		}
    	}	
    } 
    

    (4)ConcreteObserver

    public class ConcreteObserver implements Observer
    {
    	public void update()
    	{
    		//具体更新代码
    	}
    } 

    (5)Test

    Subject subject = new ConcreteSubject();
    Observer observer = new ConcreteObserver();
    subject.attach(observer);
    subject.notify(); 
    

      

      

  • 相关阅读:
    ASP.NET MVC学习笔记-----ActionInvoker
    quartz启动报错
    THUSC 2021 游记
    C++下随机数的生成
    友链
    memset一些技巧
    CodeForces Round #705 总结&题解
    php计算两坐标距离
    vue中使用keepAlive组件缓存遇到的坑
    vue 中 keepAlive
  • 原文地址:https://www.cnblogs.com/sysout/p/5156293.html
Copyright © 2011-2022 走看看