Press the title to see all pages of this category, or go back to the main PortlandPatternRepository page. ---- see SomePatternsQuestionsAnswered ---- A pattern describes a solution to conflicting forces, to quote ChristopherAlexander, "in such a way that you can use this solution a million times over, without ever doing it the same way twice." Christopher ALEXANDER was writing primarily about architecture, construction, and urban/regional planning -- how people organize their environment. His ideas about patterns have been applied to software development by WardCunningham and others. Patterns are one of the main reasons for wiki wiki. See CategoryAntiPattern for commonly used patterns of behavior that often produce '''undesirable''' results. ----- Comments on selected pages: * TestIfDateRangesOverlap ''[Maybe it's just an idiom. ;-]'' * InterfaceFactories ''[Java idiom]'' ----- Patterns using the DesignPatternsBook categorization scheme: '''CategoryCreationalPatterns''' * AbstractFactoryPattern * BuilderPattern * FactoryMethodPattern * PrototypePattern * SingletonPattern: a class of which only a single instance can exist. * LazyInstantiationPattern * UtilityPattern: a class for which no instances exist. '''CategoryStructuralPatterns''' * AdapterPattern: adapt the interface of one class to another * BridgePattern: decouple an abstraction from its implementation so that the two can vary independently * CompositePattern * DataBusPattern * DecoratorPattern: attach additional responsibilities to an object dynamically. * FacadePattern: a single class that provides a unified interface to an entire subsystem. * FlyweightPattern * ProxyPattern * RoleObjectPattern * AnnotatedCallback: supply a large number of callbacks to a library (proposed) '''CategoryBehavioralPatterns''' * ChainOfResponsibilityPattern * CommandPattern: encapsulate a command request as an object. * InterpreterPattern * IteratorPattern: sequentially access the elements of a collection. * MediatorPattern * MementoPattern: capture and restore an object's internal state. * ObserverPattern: when one object changes state, a list of "observer" objects is notified. * StatePattern * StrategyPattern * TemplateMethodPattern * VisitorPattern * HierarchicalVisitorPattern ----- Other Common Patterns: '''CategorySecurityPatterns''' * FacetPattern * CaretakerPattern '''CategoryConcurrencyPatterns''' * BalkingPattern * GuardedSuspension * SchedulerPattern * ReadWriteLock * DoubleCheckedLocking * DisableJobRequestsWhileRunningJob '''CategoryRealTimePatterns''' * ScheduledTask '''SqlPattern''' *ThinkSqlAsConstraintSatisfaction *TemplateTables *SliceResultVertically *TreeInSql '''UserInterfacePatterns''' (UserInterface) * DynamicUserInterfacePattern * DisableJobRequestsWhileRunningJob '''Life Cycle Patterns''' * CompatibleSuiteUpgrade v. IncompatibleSuiteUpgrade '''Social''' * CommunityLifeCycle * DemocracyPattern * KritarchyPattern * MeltingPot '''CategorySelfImprovementPatterns''' * LogBook * OneBookPerMonth * GetaLife '''Other''' * PatternBacklash (Pattern Criticism) * RelationalPatterns * MightBePatterns * BlackBeltsTrainWhiteBelts (CategoryTeamPattern?) ---- * DesignPatterns -- discussion on patterns in general * DesignPatternTemplate -- tips on creating new pattern pages ----- For another way to organize patterns, see CategorizingPatterns. *** http://c2.com/ppr/titles.html *** http://www.hillside.net/patterns/ SoftwareDesignPatternsIndex (With cross references to other names for the same pattern.) CategoryCategory