Будет ли иерархия 10 классов Java слишком большой? - PullRequest
2 голосов
/ 23 июня 2011

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

Я загружаю десятки плагинов, чтобы увеличить время загрузки, и кажется, что он загружается вполне нормально, поэтому мне интересно, каковы плохие побочные эффекты наследованиядизайн, помимо проблем " наследование против композиции ", таких как проблемы с производительностью, при загрузке или во время выполнения.

Я бы добавил и сказал, что это не модель плагинапроблема дизайна, это проблема дизайна приложения по модели плагина, должно ли приложение знать все свои плагины?или если приложение определяет плагины, которые могут иметь свои собственные плагины, о которых основное приложение не узнает о них.Дизайн работает для меня, и это экономит мне время кодирования, вопрос в том, как бы он себя вел во время выполнения?

Заранее спасибо,

Адам Зехави.

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Я думаю, что проблема с глубокой иерархией не столько связана с производительностью.Это больше о поддерживаемости вашего кода.В любом случае, если вам нужна такая глубокая иерархия, используйте ее или опубликуйте более подробную информацию.

Конечно, вы должны обратить внимание на то, что вы делаете.Например:

public someClassDeepLevel0{ public void foo(){do something}}
.....
public someClassDeepLevel10 extends someClassDeepLevel9{
public void foo(){
 //do something
 super.foo();
}
}

Количество обращений к foo () пропорционально глубине вашей иерархии.Если вы делаете такие вещи, то производительность может быть весьма актуальной.

1 голос
/ 23 июня 2011

В общем, не беспокойтесь о цифрах. Беспокойство по поводу дизайна. Если дизайн диктует глубокую иерархию, пусть будет так. Если вы цените числа над дизайном, возможно, вам не стоит проектировать.

...