设计模式---观察

    //观察者模式,一个观察,一个被观察,或者叫可观察;响应接口模式,那就观察接口,被观察接口;
    //定义:一旦被观察有什么风吹草动,立即通知观察的那家伙。
    //怎么实现?肯定接口实现成观察和被观察两个类。
    //那怎么一个有风吹就通知观察那家伙。那肯定是把观察的那家伙放到被观察里面的某个地方
    //一旦风吹,就调用观察的方法。他就被知道了。
    //jdk经典案例java.util.Observer和java.util.Observable两个家伙
    //java.util.Observer接口,实现成为观察者。实现update方法。被通知的方法。
    //java.util.Observable,这家伙是一个类,不搞成接口。不知道为啥。
    //里面搞了个vector,用来装观察者。有什么风吹就调用notifyObservers方法。
    //里面还是synchronized方法。因为里面vector控制不了竞态条件
    //里面setChangeed又搞成protect,非同个包没法使用。硬生生要我继承创建一个新的被观察者类。
    
    
    public class XX implements java.util.Observer{
        //Observable o 带进来了
        @Override
        public void update(Observable o, Object arg) {
            System.out.println("Object arg"+arg);
        }    
    }
    
    
    public class YY extends java.util.Observable{
        
        public void noticeAll(){
            super.setChanged();
            super.notifyObservers("都起来干活了");
        }
        
    }
    
    @SuppressWarnings("rawtypes")
    public static void main(String[] args) throws ParseException{

        test.XX b = new test().new XX();
        test.YY a = new test().new YY();
        a.addObserver(b);
        System.out.println(a.countObservers());
        a.countObservers();
        a.noticeAll();

猜你喜欢

转载自blog.csdn.net/huangddy/article/details/84147283