我正在阅读关于为云开发可伸缩软件的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