Рубиновые "Базовые" классы - PullRequest
16 голосов
/ 21 сентября 2010

Кажется банальным называть классы "Base" в Ruby.Я не уверен, почему и как я к этому отношусь.

Рассмотрим, например, ActiveRecord .ActiveRecord - это модуль, который содержит ряд классов, таких как Observer и Migration, а также класс с именем Base.В чем преимущество этого, в отличие от ActiveRecord класса, который содержит Observer и Migration?

class ActiveRecord

  class Observer
    [...]
  end

  class Migration
    [...]
  end

end

против

module ActiveRecord

  class Base
    [...]
  end

  class Observer
    [...]
  end

  class Migration
    [...]
  end

end

1 Ответ

23 голосов
/ 21 сентября 2010

Класс Base обычно используется для идентификации абстрактного класса, предназначенного для расширения и реализации разработчиком в конкретном классе.

Например, ActiveRecord::Base является абстрактным классом для любого ActiveЗапись модели в проекте Rails.Модель выглядит как

class User < ActiveRecord::Base
end

Аналогично, Observer определяет свой собственный Observer::Base, а Action Controller определяет ActionController::Base, который в проекте Rails немедленно реализуется ApplicationController::Base.

Ruby не предоставляет и ключевое слово уровня языка или синтаксис для определения абстрактных классов.Технически говоря, ActiveRecord::Base это не настоящий абстрактный класс, но это своего рода соглашение использовать Base для этого шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...