AntiPatterns: The Survival Guide Whereas patterns are good ideas that can be re-applied to new situations, AntiPatterns: The Survival Guide looks at what goes wrong in software development, time and time again. Most software projects fail According to new research, success in 68% of technology projects is "improbable." Poor requirements analysis causes many of these failures, meaning projects are doomed right from the start (ZDnet)
There are many types of design patterns, for instance Algorithm strategy patterns addressing concerns related to high-level strategies describing how to exploit application characteristics on a computing platform.Computational design patterns addressing concerns related to key computation identification.Execution patterns that address concerns related to supporting application execution, including strategies in executing streams of tasks and building blocks to support task synchronization.Implementation strategy patterns addressing concerns related to implementing source code to support program organization, andthe common data structures specific to parallel programming.Structural design patterns addressing concerns related to high-level structures of applications being developed. History Although design patterns have been applied practically for a long time, formalization of the concept of design patterns languished for several years. Practice
Huston Design Patterns
In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.
Machine Objects - Hierarchical state machines in C++ 1 Introduction The Machine Objects class library allows the creation of state machines based on the "State" design pattern in plain C++. It extends the pattern with the option to create hierarchical state machines, making it possible to convert the popular UML statechart notation to working code in a straightforward way. Other features are entry and exit actions, state histories and state variables. The "just show me code" link to an example state machine: Microwave
This design pattern and methodology ensures that only one instance of the C++ class is instantiated. It assures that only one object is created and no more. It is often used for a logging class so only one object has access to log files, or when there is a single resource, where there should only be a single object in charge of accessing the single resource. The singleton pattern discussed here gives the class itself, the responsibility of enforcement of the guarantee that only one instance of the class will be allowed to be generated. File: logger.hpp Linux Tutorial - C++ Singleton design pattern
You should probably read up Alexandrescu's book. Regarding the local static, I haven't use Visual Studio for a while, but when compiling with Visual Studio 2003, there was one local static allocated per DLL... talk about a nightmare of debugging, I'll remember that one for a while :/ 1. Singleton pattern in C++