package com.djk.design.action.obser;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
/**
* 文件监听器
* @author dWX207527
*
*/
public class FileMoniter extends Observable implements Runnable
{
private List<String> list = new ArrayList<String>();
@Override
public void run()
{
while (true)
{
try {
Thread.sleep(5000);
} catch (Exception e) {
}
for (String string : list)
{
setChanged();
notifyObservers(string);
}
}
}
public void add(String fileName,Observer o)
{
if (null == fileName || "".equals(fileName))
{
return;
}
if (list.contains(fileName))
{
return ;
}
list.add(fileName);
super.addObserver(o);
}
}
package com.djk.design.action.obser;
import java.util.Observable;
import java.util.Observer;
public final class IniFile implements Observer
{
private static final String FILE_NAME ="ini";
@Override
public void update(Observable o, Object arg)
{
String fileName = (String)arg;
if (!FILE_NAME.equals(fileName))
{
return;
}
System.out.println("ini file notify");
}
}
package com.djk.design.action.obser;
import java.util.Observable;
import java.util.Observer;
public class ProFile implements Observer
{
private static final String FILE_NAME ="pro";
@Override
public void update(Observable o, Object arg)
{
String fileName = (String)arg;
if (!FILE_NAME.equals(fileName))
{
return;
}
System.out.println("pro file notify");
}
}
package com.djk.design.action.obser;
public class Client {
public static void main(String[] args) {
FileMoniter fileMoniter = new FileMoniter();
fileMoniter.add("ini", new IniFile());
fileMoniter.add("pro", new ProFile());
Thread thread = new Thread(fileMoniter);
thread.start();
}
}