2012-03-19 2 views
5

Я хотел бы знать, что представляет собой точная разница между фрагментом класса и фрагментом объекта в лифте.Разница между фрагментом класса и фрагментом объекта

Если у меня есть

class Foo { 
    var a: String 
    def render(n:NodeSeq) = { 
    <h3> you chose {a} </h3> 
    } 
} 

и

object Bar { 
    var b: String 
    def render(n:NodeSeq) = { 
    <h3> you chose {b} </h3> 
    } 
} 

Какова конкретная разница между ними, сделать a и b имеют различное поведение. В simply lift говорится, что

В этом случае фрагмент кода является объектом синглтон, потому что он не принимает никаких параметров конструктора и не имеет экземпляр variabled.

Значит ли это, что для каждого пользователя Bar будет одинаковым?

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

ответ

8

См. this page.

В принципе, новый экземпляр Foo будет создан для каждого HTTP-запроса (так что будет много существующих одновременно), но только один экземпляр Bar будет когда-либо существовать одновременно.

+0

Спасибо, это именно тот маленький намек, который мне нужен! –

-2

Объект - это экземпляр класса. В этом случае вы можете сразу определить объект. В let say C++/Java и т. Д. Вы должны сначала создать класс, а затем создать его экземпляр. Это упрощает, т. Е. Когда вам нужно создать одноэлементный класс, который вам нужно будет сделать для шаблона проектирования для других объектно-ориентированных языков, которые не поддерживают конструкцию объекта.

Чтобы еще разделить два, рассмотрим класс проекта дома и объекта.

+0

Привет, Я понимаю концепцию объекта и класса, это просто то, что применяется к фрагментам и лифту, я теряюсь в том, что получает пользователь. –

+0

Я не уверен, что я следую. Предполагая, что вы вставили во все соответствующие коды, это разница между ними. Вам нужно создать экземпляр, а другой - нет. Они будут вести себя иначе, потому что функции определяются по-разному. Но да, каждый доступ к Bar вызывает тот же код. Это синглтон. Вызов одного и того же метода в двух разных экземплярах Foo также будет запускать тот же код, только с разными «этими» ссылками –

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