<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://bliki.brandonburk.com/snipsnap/rdf'>
    <s:Snip rdf:about='http://bliki.brandonburk.com/snipsnap/rdf#Design+Principles'
         s:cUser='brandon'
         s:oUser=''
         s:mUser='brandon'>
        <s:name>Design Principles</s:name>
        <s:content>1 Principles and Tenets of Object Oriented Development&#xD;&#xA;&#xD;&#xA;Notes from one of my favorite Robert C. Martin articles.\\&#xD;&#xA;Reference: http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf&#xD;&#xA;&#xD;&#xA;1 Dependency Management Principles&#xD;&#xA;&#xD;&#xA;1.1 The Open Closed Principle&#xD;&#xA;&#xD;&#xA;Bob Martin sites Bertrand Meyer as the originator of this idea. Basically, modules of software should be designed to be open for reuse and extension but closed for source code modification.&#xD;&#xA;&#xD;&#xA;1.1 The Liskov Substitution Principle&#xD;&#xA;&#xD;&#xA;Barbar Liskov introduced this principle in that subclasses should be substitutable for their base classes and not effect the user of the base class.&#xD;&#xA;Bob Martin highlights the fact that violation of this principle is indeed a latent violation of the Open Closed principle.&#xD;&#xA;&#xD;&#xA;1.1 The Dependency Inversion Principle&#xD;&#xA;&#xD;&#xA;Uncle Bob succinctly sums up this principle. Depend upon abstractions, not upon concretions.This principle is the mechanism to achieve the Open Closed principle.&#xD;&#xA;&#xD;&#xA;1.1 The Interface Segregation Principle&#xD;&#xA;&#xD;&#xA;Many client specific interfaces are better than one general purpose interface. Basically do not create one uber interface for all clients needs, instead decompose them and then use multiple inheritance. This lends itself to the idea of favoring composition over pure inheritance as well.&#xD;&#xA;&#xD;&#xA;1 Package Cohesion Principles&#xD;&#xA;&#xD;&#xA;1.1 The Release Reuse Equivalence Principle&#xD;&#xA;&#xD;&#xA;...&#xD;&#xA;&#xD;&#xA;1.1 The Common Closure Principle&#xD;&#xA;&#xD;&#xA;...&#xD;&#xA;&#xD;&#xA;1.1 The Common Reuse Principle&#xD;&#xA;&#xD;&#xA;...&#xD;&#xA;&#xD;&#xA;1.1 The Acyclic Dependencies Principle&#xD;&#xA;&#xD;&#xA;...&#xD;&#xA;&#xD;&#xA;1.1 The Stable Dependencies Principle&#xD;&#xA;&#xD;&#xA;...&#xD;&#xA;&#xD;&#xA;1.1 The Stable Abstractions Principle&#xD;&#xA;&#xD;&#xA;...&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;</s:content>
        <s:mTime>2007-04-11 00:49:13.0</s:mTime>
        <s:cTime>2007-02-10 01:50:37.0</s:cTime>
        <s:comments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
        <s:snipLinks>
            <rdf:Bag>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Architecture Patterns'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Rotting Design Awareness'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Real World Maven'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Regarding Java'/>
                <rdf:li rdf:resource='#snipsnap-index'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#5 Plus 1 Architecture'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#An Enterprise View'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Presentations and Talks'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Introduction, Principles and Value'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Design%2bPrinciples'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Agile Values, Principles and Practices'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#snipsnap-index/Rules with Drools'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Notes on Domain Driven Design'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Guitar, Guitar, Guitar'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Lean Thinking'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#toHexString()'/>
                <rdf:li rdf:resource='http://bliki.brandonburk.com/snipsnap/rdf#Theory of Constraints'/>
            </rdf:Bag>
        </s:snipLinks>
        <s:attachments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
    </s:Snip>
</rdf:RDF>

