2016-03-08 5 views
1

Мой вопрос очень похож на this один, но немного другой.OOP - лучшая практика/перфоманс

Скажем, у меня есть сложная система и тысячи следующих объектов в массиве:

abstract class Vehicle { 
    // Some vars 

    public abstract void draw(); 
} 

class Car : Vehicle { 
    // Some vars 

    public override void draw() { /* Draw function */ } 
} 

class Truck : Vehicle { 
    // Some vars 

    public override void draw() { /* Another draw function */ } 
} 

это более эффективно создать внешний (статический) класс VehicleManager, который содержит функции отрисовки для каждого суб- класс? Другими словами: каждый объект хранится в ОЗУ со всеми его функциями или компилятор оптимизирует объекты, поэтому он не отличается?

+0

Определение «более эффективным». Когда вы пытаетесь использовать оба подхода и оцениваете результаты, каковы различия в производительности? – David

ответ

0

Компилятор очень эффективен, не беспокойтесь об этом. Определение класса, которое включает в себя тело методов, копируется только один раз в исполняемый файл и, конечно, только один раз в ОЗУ.

Например, в Java, это называется ClassPool, вы можете прочитать больше о нем here

+0

Хорошо, спасибо! – random314