Какова цель пустых абстрактных классов в Кохана 3? - PullRequest
1 голос
/ 07 февраля 2012

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

Я просто поместил проект 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?

Ответы [ 2 ]

5 голосов
/ 08 февраля 2012
2 голосов
/ 07 февраля 2012

Позволяет создать модель, позвонив по номеру

.
class News_Model extends Model

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

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

class Model extends Kohana_Model

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

...