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