On May 18, 2011, at 5:06 PM, Nebojša Ćirić wrote:
>
> If I remove constructor LocaleInfo.DateTimeFormat where would I put
> LocaleInfo.DateTimeFormat.prototype.format() method for example (I would
> gladly remove the duplication, but I am not sure how)? Right now I do:
>
> LocaleInfo.prototype.dateTimeFormat(settings) {
> return new LocaleInfo.DateTimeFormat(settings, this);
> }
>
> and
>
> LocaleInfo.DateTimeFormat = function(settings, locale) {
> }
>
> does actual work of creating the new object.
Clearly I'm being sloppy by having first not read your entire API; but of
course actually developer also probably will jump in without reading everything
so may it isn't such a bad approach....
I would expect that the LocaleInfo instance you obtained (I'll call it locale)
has been instantiate for some specific "locale" (in quotes I mean the abstract
concept of some specific locale). In other words locale encapsulates all the
knowledge that is needed to perform operations in some specific "locale"
context. Part of that encapsulated knowledge is what kind of DTF to use by
default for that "locale" or how to selection from a set of possible DTFs based
upon requested settings. In practice you might only have one "class" that
implements DTF or you might have several but that really is an implementation
that should be hidden inside locale.
I would then expect to see an implementation something like this:
LocaleInfo.prototype.dateTimeFormat(settings) {
return new this.__internalDTFProvider(settings, this)
}
Now that I have written this, I see the more concise answer:
The concrete "class" that implements a specific DTF should be a private
implementation detail. It doesn't have to have a public constructor API
because the constructor is called from within the dateTimeFormat method. The
instances of such private DTF constructors support the public DTF instance API.
In other words that have methods such as format. The actual implementation of
format would hang-off of the prototype object associated with such private DTF
constructors.
Here is a third way to state it:
LocaleInfo is a constructor that has a public API that is used to create (or
access) LocaleInfo objects.
localeInfo instances have a public API (essentially the public properties of
LocaleInfo.prototype) that give access to various kinds of objects including
objects that support the DTF interface
DTF objects implement the DTF public API including format
The constructor(s) for DTF objects is an implementation detail and doesn't need
a public API
allen
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss