subject.java

来自「《JAVA与模式》附书中源代码」· Java 代码 · 共 43 行

JAVA
43
字号
package com.javapatterns.observer.variation;

import java.util.Vector;
import java.util.Enumeration;

abstract public class Subject 
{

    /**
     * @associates <{Observer}>
     * @link aggregation
     * @supplierCardinality 0..*
     */
    private Vector observersVector = new java.util.Vector();

    public void attach(Observer observer)
    {
        observersVector.addElement(observer);
        System.out.println("Attached an observer.");
    }

    public void detach(Observer observer)
    {
        observersVector.removeElement(observer);
    }

    public void notifyObservers()
    {
		java.util.Enumeration enumeration = observers();
		while (enumeration.hasMoreElements())
        {
            System.out.println("Before notifying");
			((Observer)enumeration.nextElement()).update();
		}
	}

    public Enumeration observers()
    {
        return ((java.util.Vector) observersVector.clone()).elements();
    }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?