Какова цель пустых абстрактных классов в Kohana 3?

На практике я мало использовал абстрактные классы, хотя я понимаю, что они из себя представляют: способ диктовать подклассам, какие методы должны быть реализованы.

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

abstract class Kohana_Model { 

    public static function factory($name){
        // Add the model prefix
        $class = 'Model_'.$name;
        return new $class;
    }

}

Унаследованный непосредственно под ним, у нас есть пустой абстрактный класс:

abstract class Model extends Kohana_Model {}

... И ниже этого есть три унаследованных класса: Kohana_Model_Database, Kohana_ORM и Model_Foobar.

Кто-нибудь, пожалуйста, объясните причины программирования для этого - какова цель наличия пустого абстрактного класса на таком высоком уровне в цепочке? (и вообще?)

Почему бы не наследовать Kohana_Model_Database, Kohana_ORM и Model_Foobar непосредственно от Kohana_Model, когда между Model и Kohana_Model не происходит (очевидно?) никакого другого ветвления или наследования?


person Tapefreak    schedule 07.02.2012    source источник
comment
Я никогда раньше не использовал Kohana, но кажется, что базовый класс будет расширять все классы моделей. Эта ссылка должна дать вам некоторое представление об их API kohanaframework.org/3.0/guide/api.   -  person Markus    schedule 07.02.2012


Ответы (2)


Ответы, которые вы ищете, это Каскадная файловая система и Прозрачные расширения.

person Kemo    schedule 08.02.2012

Это позволяет вам создать модель, вызвав

class News_Model extends Model

по умолчанию, и это автоматически расширит Kohana_Model, и все будет хорошо.

Он также позволяет вам расширить Kohana_Model, создав собственный файл модели.

class Model extends Kohana_Model

который переопределяет абстрактный класс модели и позволяет добавлять пользовательские функции. Затем, когда вы обновите свою версию Kohana до, скажем, 3.4, ваша расширенная модель не будет перезаписана новыми файлами Kohana.

person Joe    schedule 07.02.2012