1. 程式人生 > >Java 設計模式 之 觀察者模式

Java 設計模式 之 觀察者模式

float stock chan bject 17. sta chang eth int

http://www.verejava.com/?id=16999149610674

package com.observer.theory;

public class Test
{
    public static void main(String[] args)
    {
        StockData data=new StockData(16.1f,15.0f,17.2f,16.9f);
        
        Buyer buyer=new Buyer(data);
        Trading trading=new Trading(data);
        
        data.setStockData(16.1f,15.0f,17.4f,16.9f);
        data.setStockData(16.1f,14.5f,17.4f,16.9f);
        
    }
}





package com.observer.theory;

import java.util.Observable;
import java.util.Observer;

public class Trading implements Observer
{
    public Trading(Observable o)
    {
        o.addObserver(this);
    }

    @Override
    public void update(Observable o, Object arg)
    {
        if(o instanceof StockData)
        {
            StockData data=(StockData)o;
            System.out.println("交易報告:");
            System.out.print("開盤價:"+data.getOpen());
            System.out.print("收盤價:"+data.getClose());
            System.out.print("最低價:"+data.getLow());
            System.out.print("最高價:"+data.getHigh());
            System.out.println("");
        }
    }
    
    

}





package com.observer.theory;

import java.util.Observable;
import java.util.Observer;

public class Buyer implements Observer
{
    
    public Buyer(Observable o)
    {
        o.addObserver(this);
    }

    @Override
    public void update(Observable o, Object arg)
    {
        if(o instanceof StockData)
        {
            StockData data=(StockData)o;
            System.out.println("買家報告:");
            System.out.print("開盤價:"+data.getOpen());
            System.out.print("收盤價:"+data.getClose());
            System.out.print("最低價:"+data.getLow());
            System.out.print("最高價:"+data.getHigh());
            System.out.println("");
        }
    }
    
    

}





package com.observer.theory;

import java.util.Observable;
import java.util.Observer;

public class StockData extends Observable
{
    private float open;
    private float low;
    private float high;
    private float close;
    public StockData(float open, float low, float high, float close)
    {
        super();
        this.open = open;
        this.low = low;
        this.high = high;
        this.close = close;
    }
    public float getOpen()
    {
        return open;
    }
    public void setOpen(float open)
    {
        this.open = open;
    }
    public float getLow()
    {
        return low;
    }
    public void setLow(float low)
    {
        this.low = low;
    }
    public float getHigh()
    {
        return high;
    }
    public void setHigh(float high)
    {
        this.high = high;
    }
    public float getClose()
    {
        return close;
    }
    public void setClose(float close)
    {
        this.close = close;
    }
    
    public void setStockData(float open, float low, float high, float close)
    {
        this.open = open;
        this.low = low;
        this.high = high;
        this.close = close;
    
        setChanged();
        notifyObservers();
    }
    
}

http://www.verejava.com/?id=16999149610674

Java 設計模式 之 觀察者模式