2007年5月26日 星期六

深入淺出設計模式_part2(觀察者模式)



觀察者模式
定義了物件的一對多關係,如此一來當一個物件改變狀態,其他相依者都會收到通知並自動更新。

設計守則:設計盡量讓需要互動的物件之間關係鬆綁。

EX:利用java.util.Observable & java.util.Observer來實踐觀察者模式

package headfirst.observer.weatherobservable;

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

//WeatherData為一個主題(被觀察者)
public class WeatherData extends Observable {
//需要改變的三個有關於天氣的參數
private float temperature;
private float humidity;
private float pressure;

public WeatherData() { }

//自訂的方法,用來改變觀察者的天氣參數
public void measurementsChanged() {
//設定旗標,可增加更新觀察者的彈性,可設定多次才更新或到一定值才更新,此方法繼承 自Observable類別
setChanged();
/**
setChanged(){
changed=true;
}
**/
//在旗標設定為true時通知觀察者,此方法繼承自Observable類別
notifyObservers();
/**
notifyObservers(Object org){
if(change){
for every observer on the list{
call update(this,org);
}
}
}

**/
}

public void setMeasurements(float temperature, float humidity, float pressure) {
this.temperature = temperature;
this.humidity = humidity;
this.pressure = pressure;
measurementsChanged();
}

public float getTemperature() {
return temperature;
}

public float getHumidity() {
return humidity;
}

public float getPressure() {
return pressure;
}
}


package headfirst.observer.weatherobservable;

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

//觀察者,實做Observer介面及一個自訂的顯示介面DisplayElement
public class CurrentConditionsDisplay implements Observer, DisplayElement {
Observable observable;
private float temperature;
private float humidity;

//將自己新增為一個觀察者
public CurrentConditionsDisplay(Observable observable) {
this.observable = observable;
observable.addObserver(this);
}

//接受通知,改變自己的狀態並顯示
public void update(Observable obs, Object arg) {
if (obs instanceof WeatherData) {
WeatherData weatherData = (WeatherData)obs;
this.temperature = weatherData.getTemperature();
this.humidity = weatherData.getHumidity();
display();
}
}

//實踐自訂的顯示介面
public void display() {
System.out.println("Current conditions: " + temperature
+ "F degrees and " + humidity + "% humidity");
}
}

2007年5月13日 星期日

深入淺出設計模式_part1(策略模式)


ch1.策略模式
設計守則:找出程式中可能需要更動之處,把她 們獨立出來,不要和那些不需更動的 程式混在一 起。

設計守則:寫程式是針對介面而寫,而不是針對 實踐方式而寫。
EX:由行為類別實踐行為介面,而不是由Duck類別實踐行為介面。

設計守則:多用合成,少用繼承。






2007年5月6日 星期日

基金理財的六堂課

最近讀了這本在台灣基金理財的經典書,覺得真的寫的很好,書中一開始介紹投資基金需要了解的一般知識,如投資和風險的基本概念,簡介各種不同的共同基金。後半段提供許多有關基金評比的資訊,以及如何建構自己的投資組合,整理了很多關於基金投資的數據資料,不虧是財務金融專長的教授,提共的建言都有理論及數據支持,是以長期理財的觀點來看投資,不像一般的投資理財書,多為預測,較為短期。
我覺得基金投資有以下幾個重點:
1.慎選好的基金經理人,這點書中有提供一般的4433法則等建言。
2.投資基金主要是分散風險,要看的是一個趨勢並搭配資產配置,並非賺短期兩三個月的價差,故長期風險的控制是很重要的,書中對於時間的分散風險(定期定額投資)及空間的分散風險(不同類型的基金互相搭配)都有解說。再來不同年齡的資產配置也都有範例說明,教導如何作好的資產配置。
總言之,本書對於一般的基金投資人真的是不可多得的入門書,對於長期的基金理財很有幫助。

名言佳句:
1.大多數人屬於風險規避者,因此高風險投資必需較低風險投資提共更高的預期報酬。
2.明明只要做分散投資的動作就可以消除的風險是笨風險(非系統風險),笨風險是沒有風險溢酬的。

2007年3月10日 星期六

最近小接觸了一下Spring架構,終於有點了解IoC和AOP在Spring內扮演的角色了
以下試我參考的網路文章:
IoC
http://caterpillar.onlyfun.net/Gossip/SpringGossip/SpringGossip.html
Spring
http://www.javaworld.com.tw/jute/user/download/145561/AOP%E5%85%A5%E9%96%80.pdf
其實都是網路分享者良葛格的大作啦,有機會希望可以研讀他的"Spring2.0技術手冊"
現在進階的讀物以大同大學圖書館借來的"精通Spring Framework"為主
如有特殊心得在來分享囉!
今天來講一下本blog標題的來源好了
其實來源是一本最近讀的書啦
書名叫做"網路巨變元年",作者是一個日本人 梅田望夫
在書的序言就講了一個震撼我的概念,他述說了最近一個在改變世界的三個趨勢
就是網際網路,低價革命及開放原始碼
並說明了未來將由升處在遠端的公司(google)來掌握整個世界
我對他的想法感到贊同,所以就用了這個標題啦!
已經開始上班了兩個多月了,內心有蠻多的感觸的
果然世界不是那麼簡單的,生活也不是那麼容易的
想要堅持到底,但未知的未來還是不斷的襲擊自己,讓自己恐懼
哀....果然安排好的人生是輕鬆一點的啊!
不過還沒到絕望的時候,畢竟這才是剛開始!

2007年2月28日 星期三

今天228是本blog開張大吉的一天,應該沒什麼人來吧
而且我今天也累了,肚子好餓喔.......
先當日記寫吧!
對於未來先給一些目標吧
未來的目標還是先專攻再java解決方案上
除了對JSF,Spring一些framework的了解外
希望能對底下的WebServer更加的了解
希望能在2007年裡,能在java上有一點小成就^^