我正在閱讀關於爲雲開發可伸縮軟件的ibm.com/developerworks上的文章(現在找不到該文章)。面向對象和可伸縮性
當然,主要想法是無狀態的。沒有什麼應該包含狀態了,這是通過不再有成員數據完成的。每個方法都應該通過傳遞給它的參數來獲得它的日期。
一個例子是這樣的:
class NonScalableCircle {
int radius;
void setRadius(int radius){
this.radius = radius;
}
public integer getDiameter() {
return 2*radius;
}
}
解釋爲什麼這是不可伸縮的,是因爲你必須首先設置半徑,然後調用的直徑。所以有一個命令來工作,因爲方法使用相同的數據。
可擴展的例子是:
class ScalableCircle {
public integer getDiameter(int radius) {
return 2*radius;
}
}
當然,這是真的。無狀態的縮放方式更好。 考慮到這一點以及OBJECT = data +行爲這一事實,我的問題是:
OOP是否僅適用於高度併發的應用程序? OOP是否會死亡並被程序編程所取代?
因爲即使現在,許多開發人員都使用貧血域模型並對服務中的邏輯進行編碼。真的沒有太多的OOP。
「不,你不能做程序性和高度併發的。」 WTF?這是無稽之談。現存的絕大多數高度並行軟件都是程序性的,現存的絕大多數高度並行軟件都是程序性的。在原則上,功能以這種方式提供了優勢,因爲人們已經指出了25年,但是說比這更強烈的東西完全脫離了現實。 – 2011-05-25 18:31:06
@JonathonDursi你的權利,聲明太強大了。我調整了它,顯着降低了它。我的意思是以程序的方式做高併發是很困難的。如果是10或1000,它也取決於併發/並行性的級別。 – Raynos 2011-05-25 18:37:45
不夠公平。但是很難以_any_方式進行高級併發:) – 2011-05-25 18:45:23