javaSE (27) (관찰자 디자인 모드)
1.package us.google.www;
import java.util.Vector;
/** *           * @author chongrubujing * */
public class Doll implements Subject{
    //                 (             )
    private Vector<Observer> v = new Vector<Observer>();
    private float price;
    public Doll(float price) {
        super();
        this.price = price;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        //     ,        
        this.price = price;
        notifyObserver();
    }
    @Override
    public void registerObserver(Observer o) {
        //     
        v.add(o);
    }
    @Override
    public void removeObserver(Observer o) {
        //     
        v.remove(o);
    }
    @Override
    public void notifyObserver() {
        //          
        for (Observer o : v) {
            o.update(price);
        }
    }
}
2.package us.google.www;
/** *       * @author chongrubujing * */
public interface Observer {
    /** *            */
    public void update(float price);
}
3.package us.google.www;
/** *          * @author chongrubujing * */
public class Person implements Observer {
    private String name;
    public Person(String name) {
        super();
        this.name = name;
    }
    @Override
    public void update(float price) {
        System.out.println(name+"              :"+price);
    }
}
4.package us.google.www;
/** *        * @author chongrubujing * */
public interface Subject {
    /** *          * @param o */
    public void registerObserver(Observer o);
    /** *       * @param o */
    public void removeObserver(Observer o);
    /** *      (    ) * @param o */
    public void notifyObserver();
}
5.package us.google.www;
public class Test {
    public static void main(String[] args) {
        //          
        Doll doll = new Doll(3000);
        //         
        Person p1 = new Person("  ");
        Person p2 = new Person("   ");
        //       
        doll.registerObserver(p1);
        doll.registerObserver(p2);
        System.out.println("     :");
        //    
        doll.setPrice(2888);
        System.out.println("     :");
        doll.setPrice(2599);
        System.out.println("     :");
        doll.setPrice(1988);
        doll.removeObserver(p2);
        System.out.println("     :");
        doll.setPrice(1599);
    }
}
6.       :
package us.google.observer2;
/** *     obseverable             */
import java.util.Observable;
public class Doll extends Observable{
    private float price;
    public Doll(float price) {
        super();
        this.price = price;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
        //       
        this.notifyObservers();
        this.setChanged();
    }
}
7.package us.google.observer2;
import java.util.Observable;
import java.util.Observer;
import java.util.concurrent.SynchronousQueue;
/* * *     java.util.Observer             */
public class Person implements Observer{
    private String name;
    public Person(String name) {
        this.name = name;
    }
    @Override
    public void update(Observable o, Object arg) {
        if(o instanceof Observable)
        {
            Doll  doll = (Doll)o;
            System.out.println(name+"            :"+doll.getPrice());
        }
    }
}
8.package us.google.observer2;
public class Test {
    public static void main(String[] args) {
        Doll doll = new Doll(3000);
        Person p1 = new Person("  ");
        Person p2 = new Person("  ");
        doll.addObserver(p1);
        doll.addObserver(p2);
        System.out.println("     ");
        doll.setPrice(2988);
        System.out.println("     ");
        doll.setPrice(2698);
        System.out.println("     ");
        doll.setPrice(1998);
    }
}
                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.