<rdf:RDF
    xmlns:s='http://snipsnap.org/rdf/snip-schema#'
    xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
    xml:base='http://wiki.moredesignpatterns.com/rdf'>
    <s:Snip rdf:about='http://wiki.moredesignpatterns.com/rdf#Value+Object+Applicability+v2'
         s:oUser=''>
        <s:name>Value Object Applicability v2</s:name>
        <s:content>Use the Value Object pattern if&#xD;&#xA;&#xD;&#xA;* the domain concept you are implementing represents a value type&#xD;&#xA;&#xD;&#xA;and if&#xD;&#xA;&#xD;&#xA;* the resulting class does not become too heavyweight as to slow down performance significantly.&#xD;&#xA;&#xD;&#xA;We say that we implement “value objects” using a “value object class” that represents a “value type” as derived from modeling your application domain. Value type means the same as data type, but is more specific. &#xD;&#xA;&#xD;&#xA;It would best if programming languages had language features that explicitly marked classes as value types, for example, by using the keyword “valuetype” rather than “class”. (This is finally in the making, see [IBM05], [SUN06].)&#xD;&#xA;&#xD;&#xA;The Value Object pattern is widely applicable. Value types are as fundamental as object classes, making the distinction between values and objects explicit. Examples of value types in the financial services domain are monetary amounts and currencies, in the Internet domain they are protocol names, domain names, and URLs, in math they are percentages, explicit fractions, and integrals, and in engineering they are the metric system and its units.&#xD;&#xA;&#xD;&#xA;[Next|Value Object Structure v2]&#xD;&#xA;&#xD;&#xA;</s:content>
        <s:cUser>Dirk Riehle</s:cUser>
        <s:mUser>Dirk Riehle</s:mUser>
        <s:mTime>2006-09-19 07:20:45.152</s:mTime>
        <s:cTime>2006-09-19 07:02:39.144</s:cTime>
        <s:comments>
            <rdf:Bag>
                <rdf:li>
                    <s:Comment rdf:about='http://wiki.moredesignpatterns.com/rdf#comment-Value+Object+Applicability+v2-1'
                         s:oUser=''>
                        <s:name>comment-Value Object Applicability v2-1</s:name>
                        <s:content>From the [PLoP 2006] writers&apos; workshop:&#xD;&#xA;&#xD;&#xA;* How does this compare with struct in .net (C#)?&#xD;&#xA;&#xD;&#xA;* What is &quot;heavyweight&quot;? (DR: cross product of memory with usage frequency.)&#xD;&#xA;&#xD;&#xA;* Add more examples.</s:content>
                        <s:cUser>Dirk Riehle</s:cUser>
                        <s:mUser>Dirk Riehle</s:mUser>
                        <s:mTime>2006-10-24 08:02:42.192</s:mTime>
                        <s:cTime>2006-10-24 08:02:45.624</s:cTime>
                        <s:commentedSnip rdf:resource='http://wiki.moredesignpatterns.com/rdf#Value+Object+Applicability+v2'/>
                    </s:Comment>
                </rdf:li>
            </rdf:Bag>
        </s:comments>
        <s:snipLinks>
            <rdf:Bag>
                <rdf:li rdf:resource='http://wiki.moredesignpatterns.com/rdf#Value Object Motivation v2'/>
                <rdf:li rdf:resource='http://wiki.moredesignpatterns.com/rdf#Value Object'/>
                <rdf:li rdf:resource='http://wiki.moredesignpatterns.com/rdf#Value Object Sample Code v2'/>
                <rdf:li rdf:resource='#snipsnap-notfound'/>
                <rdf:li rdf:resource='http://wiki.moredesignpatterns.com/rdf#Value Object Structure v2'/>
                <rdf:li rdf:resource='#Cop92'/>
                <rdf:li rdf:resource='http://wiki.moredesignpatterns.com/rdf#Value Object Applicability'/>
                <rdf:li rdf:resource='http://wiki.moredesignpatterns.com/rdf#Value Object Implementation'/>
                <rdf:li rdf:resource='http://wiki.moredesignpatterns.com/rdf#Dirk Riehle'/>
                <rdf:li rdf:resource='http://wiki.moredesignpatterns.com/rdf#Value Object Intent v2'/>
                <rdf:li rdf:resource='#snipsnap-index'/>
            </rdf:Bag>
        </s:snipLinks>
        <s:attachments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
    </s:Snip>
</rdf:RDF>
