美文网首页
行为型模式

行为型模式

作者: 一凡呀 | 来源:发表于2018-02-27 22:21 被阅读0次

    行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式

    观察者模式:

    类图:
    观察者模式.png

    我解释下这些类的作用:MySubject类就是我们的主对象,Observer1和Observer2是依赖于MySubject的对象,当MySubject变化时,Observer1和Observer2必然变化。AbstractSubject类中定义着需要监控的对象列表,可以对其进行修改:增加或删除被监控对象,且当MySubject变化时,负责通知在列表内存在的对象。我们看实现代码:
    一个Observer接口:

    public interface Observer {  
        public void update();  
    }  
    

    两个实现类:

    public class Observer1 implements Observer {  
      
        @Override  
        public void update() {  
            System.out.println("observer1 has received!");  
        }  
    }  
    
    public class Observer2 implements Observer {  
      
        @Override  
        public void update() {  
            System.out.println("observer2 has received!");  
        }  
      
    } 
    

    Subject接口及实现类:

    public interface Subject {  
          
        /*增加观察者*/  
        public void add(Observer observer);  
          
        /*删除观察者*/  
        public void del(Observer observer);  
          
        /*通知所有的观察者*/  
        public void notifyObservers();  
          
        /*自身的操作*/  
        public void operation();  
    }  
    
    public abstract class AbstractSubject implements Subject {  
      
        private Vector<Observer> vector = new Vector<Observer>();  
        @Override  
        public void add(Observer observer) {  
            vector.add(observer);  
        }  
      
        @Override  
        public void del(Observer observer) {  
            vector.remove(observer);  
        }  
      
        @Override  
        public void notifyObservers() {  
            Enumeration<Observer> enumo = vector.elements();  
            while(enumo.hasMoreElements()){  
                enumo.nextElement().update();  
            }  
        }  
    }  
    
    public class MySubject extends AbstractSubject {  
      
        @Override  
        public void operation() {  
            System.out.println("update self!");  
            notifyObservers();  
        }  
      
    }  
    

    相关文章

      网友评论

          本文标题:行为型模式

          本文链接:https://www.haomeiwen.com/subject/kolvxftx.html