There are different types and levels of design patterns. For example, the Model-View-Controller (MVC) is the architectural level of design pattern.
Most design patterns are component level design patterns.
• The basic types are Behavior, Creational, Structural, and System design patterns.
• More types: Enterprise and SOA Design Patterns
Names are extremely important in design patterns; they should be clear and descriptive.
Christopher Alexander – construction architect – invented the main principles and published the first book on Design Patterns.
One of the first books in the software world was: "Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph
Johnson, John Vlissides (often called the Gang of Four or GOF – Book :-)
Among other good books: Integration-Ready Architecture and Design.
Here are several examples of Design Patterns:
Name: Service-Oriented Architecture (Approach to software architecture)
Problem: Application development or even modification require longer and longer projects.
Why: Growing applications become more complex and rigid; too firm and inflexible in spite of the name – Software
Solution: Develop applications as a set of connected standard-based reusable services to minimize duplications and maintenance.
Was it clear so far?
Impact: Extra time and efforts needed to learn and follow best practices and standards and to govern the development process.
Periodically re-visit and align technical and business architecture, carefully consider and govern creating new applications to avoid duplications and minimize maintenance.
Impact: Extra funding, time and efforts are needed for governance, while planning to retire some applications, modify and integrate others.
Name: Business-Driven Architecture (Architecture Level)
Problem: How can technology be designed to remain in alignment with changing business goals and requirements?
Solution: Business and architecture analysis is conducted as collaborative efforts on a regular basis.
Impact: To keep technology in alignment with the business that is changing over time, it will require a commitment in time and cost to govern the development process.
Name: MVC (Architecture Level)
•Problem: – Complex object involves user interface and data. Need to
simplify structure
Solution: Data in one part (Model), user View in another part (View), interaction logic in a third part (Controller)
– Model maintains state. Notifies view of changes in state.
– Controller uses state information (in Model?) and user request to determine how to handle request, tells view what to display
– View must correctly display the state of the Model
Impact: Requires separate engineering of the three parts and communication between them through interfaces
Name: Factory Method (Component Level – Creational Type)
Problem: Need to create a family of similar but different type objects, where objects are used in standard ways.
Solution: Creator class has a "getter" method which instantiate the correct subclass, for example, ConcreteProduct. Subclass is used through generic interface, for example, Product Factory.
Impact: Extra time for analysis and modeling upfront required.
Assignments: 1. Read more on Design Patterns: http://ITUniversity.us/school/public/training/SOADesignPatterns.pdf
2. Create 2 QnA related to the Design Pattern section, each with the following format where the first answer is correct and two other answers are wrong.
Question:
Answer:
Answer:
Answer:
3. Email the QnAs to dean@ituniversity.us