In software engineering, a design pattern is a general repeatable solution to a recurring problem in software design. A design pattern is not a finished design, it can be converted directly into code. How it is resolved, description or template that can be used in many different situations problem.
The use of design patterns
Design patterns can speed up the testing and validation by providing development model development process. Effective software design needs to take into account may not become visible until later in implementation. Reusable design patterns to help prevent possible lead to major problems, and improve the encoder and code readability architect familiar pattern delicate issue.
Often, people only understand how to apply certain software design techniques to certain problems. These techniques difficult to apply to a wider range of issues. Design patterns provide general solutions, it does not require a specific recording format depends on the specific problem.
In addition, the model allows the development of a known, readily understood as the name of the software communication interaction. Common design patterns can improve over time, making them more robust than ad hoc design.
Creational design patterns
Examples of these design patterns are all about class. This pattern can be further divided into two categories authoring mode to create patterns and objects. Although the class instantiation process patterns use inheritance to create effective, the object creation mode delegated the job done efficiently.
Example of abstract factories
- Abstract Factory
Examples of a few families of the class is created
Construct a detached object and its representation
- Factory Method
Creating multiple instances of a derived class
By recycling unused objects, avoid costly acquisition and release of resources
Fully initialized instance is copied or cloned
- Only son
Only one instance of the class can exist
These design patterns are all about a combination of classes and objects. Create a model class structure to use inheritance to compose interfaces. Way mode structure of an object defined by writing the object to get the new features.
Different categories of game inte rfaces
Interface isolated object, its realization
Simple and compound objects tree
Adding dynamic objects duties
Represent a single class of the entire subsystem
For instance the efficient sharing of fine-grained
- Private class data
Restrict access / mutation access
Represent another object object
Behavior Design Patterns
The design pattern is all about communication objects of the class. Mode is a communication mode behavior most particularly to those objects.
- Chain of Responsibility
Transfer request object chains manner
Package command request as an object
A method comprising the language elements in a program
Sequential access to a collection of elements
Simplify the definition of communication between classes
Internal state capture and restore objects
- Null object
Design as an object of defaults
Notify change the number of classes in a way
Object changes its state to change behavior
Packaging category internal algorithms
- Template Method
Subclass postpone concrete steps algorithm
Define a new operation of a Class unchanged
Conceptual design model has been some criticism in the field of computer science.
For the wrong question
Desired mode using the computer language or lead to inadequate technology and the ability to abstract. In an ideal factoring, the concept should not be copied, but only references. However, if the referenced instead of copied, then there is no “model” label and catalog. Paul Graham wrote in the article nerd revenge.
Peter Norvig provided a similar argument. He indicated that 16 in 23 mode design patterns book (which is mainly focused on C ++) to simplify or eliminate Lisp or Dylan (through direct language support).
Lack of a formal basis
Study design patterns have been temporary, but some people think that this concept is the need for a more formal status of the inputs. 1999 OOPSLA, the Gang of Four were (to cooperate fully with them) is subjected to a show trial, they are “accused” of computer science numerous crimes. Whom they participate in the trial of the “jury” of ⅔ “conviction.”
Lead to inefficient solutions
The idea of a design pattern is what has been recognized as the best practices in an attempt to standardize. In principle, this may seem beneficial, but in practice it often leads to unnecessary duplication of code. It almost always use a good decomposition of the implementation, rather than “just barely good enough” design model is more effective solutions.
Did not differ significantly from other abstractions
Some authors claim that design patterns are not significantly different from other forms of abstraction and use new terminology (borrowed from the architectural community) to describe the existence of the phenomenon in the field of programming is unnecessary. Model – View – Controller pattern was regarded by it as early as the “design mode” concept a few years, an example of a “model”. It is further believed that by a number of major contributions to the design patterns community (Four Books and post) is the use of Alexander’s pattern language in the form of a document; it is often ignored in the literature practice.