Ніби й не булоAnother translations: into Russian. | Participants
|
- Statistics
- Participants
- Translate into Ukrainian
- Translation result
- 0% translated in draft.
If you do not want to register an account, you can sign in with OpenID.
The Universal Design Pattern | ||
The Universal Design Pattern | ||
This idea that there is generality in the specific is of far-reaching importance. | ||
— Douglas Hofstadter, Gödel, Escher, Bach | ||
Note: Today's entry is a technical article: it isn't funny. At least not intentionally. | Зауважте: Дана стаття є суто технічною, про гумор тут не йдеться. Принаймні про нього не думалося. | |
Contents | ||
* Introduction | ||
* Three Great Schools of Software Modeling | ||
o Class Modeling | ||
o Relational Modeling | ||
o XML Modeling | ||
o Other schools | ||
o Finding the sweet spot | ||
o Property Modeling | ||
* Brains and Thoughts | ||
* Who uses the Properties Pattern? | ||
o Eclipse | ||
o JavaScript | ||
+ Pushing it even further | ||
+ The pattern takes shape... | ||
o Wyvern | ||
o Lisp | ||
o XML revisited | ||
o Bigtable | ||
* Properties Pattern high-level overview | ||
* Representations | ||
o Keys | ||
+ Quoting | ||
+ Missing keys | ||
o Data structures | ||
* Inheritance | ||
o The deletion problem | ||
o Read/write asymmetry | ||
o Read-only plists | ||
* Performance | ||
o Interning strings | ||
o Perfect hashing | ||
o Copy-on-read caching | ||
o Refactoring to fields | ||
o Refrigerator | ||
o REDACTED | ||
o Rolling your own | ||
* Transient properties | ||
o The deletion problem (remix) | ||
* Persistence | ||
o Query strategies | ||
o Backfills | ||
* Type systems | ||
* Toolkits | ||
* Problems | ||
* Further reading | ||
* Final thoughts | ||
Introduction | ||
Today I thought I'd talk about a neat design pattern that doesn't seem to get much love: the Properties Pattern. In its fullest form it's also sometimes called the Prototype Pattern. | ||
People use this pattern all over the place, and I'll give you a nice set of real-life examples in a little bit. It's a design pattern that's useful in every programming language, and as we'll see shortly, it's also pretty darn useful as a general-purpose persistence strategy. | ||
But even though this pattern is near-universal, people don't talk about it very often. I think this is because while it's remarkably flexible and adaptable, the Properties Pattern has a reputation for not being "real" design or "real" modeling. In fact it's often viewed as a something of a shameful cheat, particularly by overly-zealous proponents of object-oriented design (in language domains) or relational design (in database domains.) These well-meaning folks tend to write off the Properties Pattern as "just name/value pairs" – a quick hack that will just get you into trouble down the road. |
