ООП и масштабируемость

Я читал статью на 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;
    }
}

И, конечно, это правда. Масштабирование без сохранения состояния намного лучше. Ничто больше не должно содержать состояние, и это было сделано за счет отсутствия данных о членах. Каждый метод должен получать свою дату с помощью переданных ему аргументов.

Одним из примеров было что-то вроде:

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;
    }
}

И, конечно, это правда. Масштабирование без сохранения состояния намного лучше. Ничто больше не должно содержать состояние, и это было сделано за счет отсутствия данных о членах. Каждый метод должен получать свою дату с помощью переданных ему аргументов.

Одним из примеров было что-то вроде:

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;
    }
}

И, конечно, это правда. Масштабирование без сохранения состояния намного лучше.

Пример масштабирования был:

class ScalableCircle {
    public integer getDiameter(int radius) {
        return 2*radius;
    }
}

И, конечно, это правда. Масштабирование без сохранения состояния намного лучше.

Пример масштабирования был:

class ScalableCircle {
    public integer getDiameter(int radius) {
        return 2*radius;
    }
}

И, конечно, это правда. Масштабирование без сохранения состояния намного лучше. Учитывая это, а также тот факт, что OBJECT = данные + поведение, мои вопросы:

Разве ООП просто не подходит для приложений с высокой степенью параллелизма? Неужели ООП умрет и будет заменено процедурным программированием?

Потому что, даже сейчас, многие разработчики используют модель анемической области и кодируют логику в сервисах. На самом деле ООП сделано не так много.

5
задан Blitzkr1eg 25 May 2011 в 18:00
поделиться