zoukankan      html  css  js  c++  java
  • 设计模式 观察者模式2

    首先写观察者抽象类

    
    public abstract class Observer {
    	protected String name;
    	protected Secretary sub;
    
    	public Observer(String name,Secretary sub)
    	{
    		this.name=name;
    		this.sub=sub;
    	}
    	
    	public abstract void Update();
    }
    
    

    再写两个观察者继承它

    
    public class NBAObserver extends Observer{
    
    	public NBAObserver(String name, Secretary sub) {
    		super(name, sub);
    		// TODO Auto-generated constructor stub
    	}
    
    	@Override
    	public void Update() {
    		// TODO Auto-generated method stub
    		System.out.println(sub.getAction()+name+"关闭NBA直播,继续工作!");
    	}
    	
    
    }
    
    
    
    public class StockObserver extends Observer{
    
    	public StockObserver(String name, Secretary sub) {
    		super(name, sub);
    		// TODO Auto-generated constructor stub
    	}
    
    	@Override
    	public void Update() {
    		// TODO Auto-generated method stub
    		System.out.println(sub.getAction()+"!!!"+name+"关闭股票行情,继续工作");
    		
    	}
    
    }
    
    

    在写秘书类

    import java.util.ArrayList;
    import java.util.List;
    
    public class Secretary {
    
    	private List<Observer> observers=new ArrayList<Observer>();
    	
    	private String action;
    	
    	public String getAction() {
    		return action;
    	}
    
    	public void setAction(String action) {
    		this.action = action;
    	}
    
    	public void Attach(Observer observer)
    	{
    		observers.add(observer);
    	}
    	
    	public void Detach(Observer observer)
    	{
    		observers.remove(observer);
    	}
    	
    	public void Notify()
    	{
    		for (Observer observer : observers) {
    			observer.Update();
    		}
    	}
    	
    	
    }
    
    

    最后写测试类

    
    public class Program {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Secretary secretary=new Secretary();
    		StockObserver worker1 = new StockObserver("施于任", secretary);
    		StockObserver worker2 = new StockObserver("魏国冲", secretary);
    		
    		//登记着两位工友
    		secretary.Attach(worker1);
    		secretary.Attach(worker2);
    		
    		//发现老板回来
    		secretary.setAction("老板回来了");
    		
    		//通知两个同事
    		secretary.Notify();
    	}
    
    }
    
    
  • 相关阅读:
    Apache CXF入门
    C++中关于类型转换的问题讨论
    makefile实例(3)-多个文件实例优化
    makefile实例(2)-多个文件实例
    makefile实例(1)-helloworld
    【原创】Linux下编译链接中常见问题总结
    tcpdump命令
    共享内存基础
    关于TCP/UDP缓存
    TCP/UDP常见问题小结
  • 原文地址:https://www.cnblogs.com/yufenghou/p/6035438.html
Copyright © 2011-2022 走看看