我正在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 =数据+行为这一事实,我的问题是:

OOP是否仅对高并发应用不利?
OOP会消亡并被过程编程所取代吗?

因为即使目前如此,许多开发人员仍使用Anemic域模型并在服务中编写逻辑代码。真正的OOP并没有做太多。

最佳答案

答案是,没人知道。编写串行软件的“正确”方法尚无共识,而并行和并行编程则困难得多。

大规模有效并行计算的全部关键是数据的分布,因此有一个论点是,在设计过程中过早地封装数据-或采取对少量任务有意义的数据封装,并天真地希望扩大规模-您正在损害可扩展性。也许这意味着OO在编写可伸缩代码时会被束缚,但是也许这意味着OO与其他所有东西一样,都需要仔细计划才能实现大规模可伸缩性。

10-08 16:27