2012-02-07 2 views
1

Я не использовал абстрактные классы на практике, хотя я понимаю, что это такое: способ продиктовать подклассам, какие методы должны быть реализованы.Какова цель пустых абстрактных классов в 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, когда есть (видимо?) нет другого разветвления или наследования между моделью и Kohana_Model?

+0

Я раньше не использовал Kohana, но он кажется базовому классу, что все классы моделей будут расширяться. Эта ссылка должна дать вам некоторое представление об их API http://kohanaframework.org/3.0/guide/api – Markus

ответ

2

Это позволяет создать модель по телефону

class News_Model extends Model 

по умолчанию, и что будет тогда автоматически продлить Kohana_Model и все будет работяга доры.

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

class Model extends Kohana_Model 

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

Смежные вопросы