You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Они хранят данные, специфичные не для одного объекта, а для всех статей целиком.
20
+
Они хранят данные, специфичные не для одного объекта, а для всех статей целиком.
21
21
22
22
Как правило, это чаще константы, такие как формат "по умолчанию" `Article.DEFAULT_FORMAT`.
23
23
@@ -56,7 +56,7 @@ Article.showCount(); // (2)
56
56
57
57
Ещё один хороший способ применения -- сравнение объектов.
58
58
59
-
Например, у нас есть объект `Journal` для журналов. Журналы можно сравнивать -- по толщине, по весу, по другим параметрам.
59
+
Например, у нас есть объект `Journal` для журналов. Журналы можно сравнивать -- по толщине, по весу, по другим параметрам.
60
60
61
61
Объявим "стандартную" функцию сравнения, которая будет сравнивать по дате издания. Эта функция сравнения, естественно, не привязана к конкретному журналу, но относится к журналам вообще.
62
62
@@ -191,7 +191,7 @@ var knownUser = new User({
191
191
knownUser.sayHi(); // Вася
192
192
```
193
193
194
-
Подход с использованием фабричных методов был бы другим. Вместо разбора параметров в конструкторе -- делаем два метода: `User.createAnonymous` и `User.createFromData`.
194
+
Подход с использованием фабричных методов был бы другим. Вместо разбора параметров в конструкторе -- делаем два метода: `User.createAnonymous` и `User.createFromData`.
195
195
196
196
Код:
197
197
@@ -238,7 +238,7 @@ knownUser.sayHi(); // Вася
238
238
+Удобная расширяемость. Например, нужно добавить создание администратора, без аргументов. Фабричный метод сделать легко: `User.createAdmin = function() { ... }`. А для полиморфного конструктора вызов без аргумента создаст анонима, так что нужно добавить параметр -- "тип посетителя" и усложнить этим код.
239
239
[/compare]
240
240
241
-
**Поэтому полиморфные конструкторы лучше использовать там, где нужна именно полиморфность**, т.е. когда непонятно, какого типа аргумент передадут, и хочется в одном конструкторе охватить все варианты.
241
+
**Поэтому полиморфные конструкторы лучше использовать там, где нужен именно полиморфизм**, т.е. когда непонятно, какого типа аргумент передадут, и хочется в одном конструкторе охватить все варианты.
242
242
243
243
А в остальных случаях отличная альтернатива -- фабричные методы.
0 commit comments