Differences in design patterns, frameworks, architectures, platforms

Source: Internet
Author: User
Tags abstract exception handling naming convention reflection

Differentiate what is architecture, framework, pattern, and platform, and always feel that these words are too abstract and vague, today we all say what is the architecture, framework, pattern and platform.

Some of the individual definitions and distinctions collected from the Web are as follows:

Design Patterns < Frameworks < Architectures < platforms, from a reuse perspective, the design pattern is code-level multiplexing, the framework is module-level reuse, the architecture is system-level multiplexing, and the platform is enterprise application-level reuse.

1. Design mode

Why should we say design mode first? Because design patterns are the most basic of these concepts, they are also relatively simple. So what is design mode? To be straightforward, the design pattern is to tell you how to organize the relationship between classes, objects, and interfaces for a particular problem, which is the experience of the predecessors. For example, I want to implement a globally unique configuration class in the code, then use the singleton mode. Design patterns are used in actual coding and design frameworks, while higher-level architectures and platforms don't pay much attention to it.

2. Framework

To do web development in contact with the most framework of the ORM Framework, ORM Framework is only the general term of all data relationship mapping framework, such as NHibernate, ActiveRecord, etc., the framework is to solve the specific problems exist, other such as template framework, caching framework, the framework can not be used directly , two development times are required.

3. Architecture

From a large level, such as business-to-consumer website system architecture, there may be a variety of solutions to solve various problems in the framework, focusing on technology integration, expansion, maintainability. In a different perspective, there are also architectural issues in the framework, such as the development of the NHibernate framework and the need to consider how to design it.

4. Platform

The concept of a platform is similar to a framework, but in combination with the architectural considerations, it is a higher level of "framework", which is exactly an application. It is for enterprise users, to solve the business needs of the products formed.

Definitions from the http://www.duduwolf.com/network:

What is a schema?

Software architecture is often referred to as architecture, which refers to a software framework that can be prefabricated and reconfigurable. Architecture is still in the development period, for its definition, academia has not formed a unified opinion, and different angles of view will also cause a different understanding of the software architecture, the following are some of the mainstream standard point of view.
ANSI/IEEE 610.12-1990 Software Engineering Standard glossary for the architecture definition is: "The architecture is based on the components, the relationship between components, the relationship between the component and the environment is the basic organizational structure of a system and know the design and evolution of the above content principle (principle)."
Mary Shaw and David Garlan that software architecture is a layer in the software design process that transcends algorithmic design and data structure design in computing. Architecture issues include organizational and global control structures for various aspects, communication protocols, synchronization, data storage, assigning specific functions to design elements, organization of design elements, scale and performance, and choice between design options. The basic ideas of the Garlan & Shaw model [1] are: Software architecture ={components (component), connectors (connector), constraints (constrain)}. A component can be a set of code, such as a program's module, or it can be a standalone program, such as a database server. A connector can be a procedure call, a pipe, a remote procedure call (RPC), and so on, to represent the interaction between artifacts. Constraints are generally the object of the rules when connecting, or indicate the form and condition of the component connection, for example, the upper component can require the service of the lower component, and vice versa; the two objects should not send the message in a recursive manner; the consistency constraint of the code copy migration, and the conditions under which the connection is invalid.
There are many other ideas about schema definition, such as the bass definition, Booch & rumbaugh &jacobson definition, Perry & Wolf model [7], Boehm model, and so on, although various definitions of key architectures differ in perspective, The research object is also slightly focused, but its core content is the structure of the software system, which is represented by the Garlan & Shaw model, emphasizing that the basic elements of the architecture are components, connectors and their constraints (or connection semantics), which are mostly from the structural point of view or even the software architecture, The definition of IEEE not only emphasizes the basic composition of the system, but also emphasizes the environment of the architecture, which is the interaction with the outside world.

    What is a pattern? The concept of the
   pattern (pattern) was first proposed by architect Christopher Alexander in the 1970s and applied in the field of construction, in the mid 80 by Ward Cunningham and Kent Beck introduced his ideas into the software world, Christopher Alexander to divide the pattern into three parts: the first is the perimeter (context, can also be referred to as the contextual), refers to the mode in which the situation takes effect, and the other is the motive (System of forces), The meaning of a problem or intended goal; The third is the solution (solution), which refers to a structure or configuration that balances the motives or solves the problem described. He suggests that patterns are a rule that represents the three aspects of a perimeter, a motive, a solution, and each model describes an issue that repeats over a certain period of time, and the core of the solution to the problem, the pattern is a thing (thing) and a process, It not only describes the thing itself, but also proposes the process through which it is produced. This definition has been widely accepted by the software community.

The architecture and pattern should be a mutually encompassing process, but overall architecture is more concerned with the so-called high-level design, and the focus of the pattern is on the application of the "Guidelines or guidance scheme" in the design through experience extraction, Therefore, when considering the problem at different levels, pattern is formed on different problem domains. The goal of the model is to separate the unchanging and changing parts of common problems. The invariant part forms the pattern, so the pattern is a "guideline" for empirical abstraction, and is validated in one-time practice, with different patterns at different levels, small to a language implementation (such as singleton) large to the schema. At different levels, the model provides different levels of guidance. Depending on the granularity of the processing problem, from high to low, the pattern is divided into 3 levels: the schema pattern (architectural pattern), the design pattern, and the implementation pattern (implementation pattern). An architectural pattern is the highest level in a pattern, describing the basic structural organization or outline of a software system, usually providing a predefined set of subsystems, assigning their responsibilities, and giving the rules and guidelines for organizing them together. For example, user and file system security policy models, n-tier structures, Component Object Services, and so on, the MVC structure We know is also a hierarchy of architectural patterns. An architectural pattern can often be decomposed into a combination of many design patterns. The design pattern is the second level in the pattern, which is used to deal with the recurring problems in the program design. For example, [gof95][2] summarizes the 23 basic design Patterns--factory pattern, Observer pattern, and so on. The implementation pattern is the lowest and most specific level, dealing with problems specific to programming languages. For example, the class name, the name of the variable, the naming convention for the function name, the rules for exception handling, and so on.

From: http://dev.yesky.com/378/2012378.shtml

Because [GOF95] is the first of a book on software patterns and is one of the most popular books in oo design theory, some people often use the term design pattern to refer to any type of schema, design, or program implementation that directly deals with software. Others emphasize the partitioning of three different levels of patterns: architectural patterns (architectural pattern), design patterns, precedent (IDIOM). Precedent is sometimes called Code pattern (Coding pattern).

The difference between the three is that three different patterns exist in their respective levels of abstraction and specificity. The architecture pattern is a high-level strategy of a system, involving large-scale components as well as the overall nature and mechanics. The architectural pattern can affect the overall layout and framework structure. Design patterns are medium-scale structural strategies. These medium-scale structures implement the behavior of some large-scale components and their relationships. The quality of the model does not affect the overall layout and overall framework of the system. A design pattern defines the microscopic structure of a subsystem or component. Code patterns (or precedent) are specific examples and language-specific programming techniques. The quality of the code pattern affects the underlying details of the internal and external structure or behavior of a medium-scale component, but does not affect the medium-sized structure of a part or subsystem, and does not affect the overall layout of the system and the large-scale framework.

1. Code mode or precedent (Coding pattern or IDIOM)
Code patterns (or precedent) are lower-level patterns and are closely related to programming languages. Code patterns describe how to use the characteristics of a particular programming language to implement specific aspects or relationships of a component.
Examples of the more famous code patterns include double check lock (double-check Locking) mode, and so on.

2, design pattern
A design pattern provides an outline design that refines the components in a subsystem or software system, or the relationships between them. The design pattern describes a ubiquitous structure that repeats itself in a communication component that solves a general design problem in a given background.
Design patterns are often divided into different types, common types are:
Create design patterns, such as Factory method (Factory) mode, abstract Factory (Factory) mode, prototype (Prototype) mode, Singleton (Singleton) mode, construction (builder) mode, such as
structural design patterns, such as composition (Composite) mode, decoration (Decorator) mode, proxy mode, enjoy meta (Flyweight) mode, Façade (facade) mode, bridge mode, etc.
behavioral patterns such as template method mode, observer (Observer) mode, Iteration sub (Iterator) mode, responsibility chain (Chain of Responsibility) mode, Memo (Memento) mode, command mode, state mode, visitor (Visitor) mode, and so on.  
        above is three classic types, there are actually many other types, such as fundamental type, partition type, relation type, etc.
When design patterns are implemented in a particular programming language, code patterns are often used. For example, the implementation of the Singleton (Singleton) mode often involves a double-check lock (double-check Locking) mode.

3. Architecture mode (architectural pattern)
An architectural pattern describes the basic structural organization or outline of a software system. The schema pattern provides some pre-defined subsystems, assigns their responsibilities, and gives the rules and guidelines for organizing them together. Some authors call this architectural pattern a system pattern [STELTING02].
An architectural pattern can often be decomposed into a combination of many design patterns. Obviously, the MVC pattern is part of this pattern. The MVC pattern often includes the mediator (mediator) pattern, the Strategy (strategy) pattern, the composition (Composite) pattern, the Observer (Observer) pattern, and so on.
In addition, the common architectural patterns are:
· Layers (layered) mode, sometimes also called tiers mode
· Blackboard (blackboard) mode
· Broker (Mediation) mode
· Distributed Process (dispersion) mode
· Microkernel (micro Core) mode
Architectural patterns are often divided into the following categories:
A), from MUD to structure type. Help architects divide the system to avoid forming an ocean of objects (a sea of objects). Includes layers (layered) mode, Blackboard (blackboard) mode, pipes/filters (pipe/filter) mode, and so on.
II), dispersion system (distributed systems) type. Provides a complete architectural design for decentralized systems, including broker-like (mediation) mode.
III), Human-machine interaction (Interactive systems), supports the architecture design of systems with interactive interfaces, including MVC (Model-view-controller) mode, PAC (Presentation-abstraction-control) mode and so on.
IV), adaptable systems, support the application system to adapt to the changes in technology, software functional requirements change. such as reflection (reflection) mode, microkernel (micro-core) mode.

From: http://fanqiang.chinaunix.net/program/project/2005-06-16/3316.shtml

Software framework is the architecture of extracting the common part of software in the project software development process, and the software projects in different fields have different framework types. The role of the framework is: due to the extraction of specific domain software in the common part, so in this area of the development of new projects, the code does not need to be written from scratch, only on the basis of the framework for some development and adjustment to meet the requirements, for the development process, this will improve the quality of software, reduce costs, shorten development time, Make the development more and more easy, the benefit more do better, form a virtuous circle.

The framework is not a ready-to-use application system. is a semi-finished product, need later developers to carry out two development, implementation of specific functions of the application system. The framework is not "platform", the platform concept of fuzzy can be an operating system, an application server, a database software, a communication middleware, and so on, so platform in the application platform mainly refers to the provision of specific services of the system software, and the framework is more focused on the design, development process, or can say, The framework works by invoking the services provided by the platform.

The framework is not a toolkit or a class library, calling the API is not the use of framework development, tightly using the API is, the developer completes the system's subject section, and occasionally call the class library to implement specific tasks. While the framework constitutes a generic, general system body, two of times developers just like to fill in the blanks, according to the specific business, to complete the specific application system unique parts.

The relationship between framework and architecture

Frameworks are not architectures (i.e. software architecture). The architecture determines the overall structure of the system, the level of division, and the collaboration between the different parts of the design considerations. Frameworks are more specific than schemas. More emphasis on technical suspicion. Once the framework is identified, the software architecture is also determined, and for the same software architecture, such as MVC in web development, can be achieved through a variety of frameworks.

The relationship between frame and design pattern

Design patterns and frameworks are two different research areas in software design. The design pattern is a solution to a design problem, a pattern can be applied to different frameworks and implemented by different languages, while the framework is an application architecture, a mixture of one or more design patterns and code, although they are different, but work together to make people's design can be reused, There are some characteristics of unity in ideology, so the thought of design pattern can be applied in frame design.

There are significant differences between frameworks and design patterns, mainly in the content provided by the two and in the fields of application.

1), from the field of application, the framework gives the entire application of the architecture, and design patterns give a single design problem solution, and this solution can be used in different applications or frameworks.

2), from the content, the design pattern is only a simple design, the design can be used in different languages to achieve, and the framework is a mixture of design and code, the programmer can be in various ways to expand the framework to form a complete variety of applications.

3), on the basis of the second article, it can be concluded that the design pattern is more portable than the framework: once the framework is designed to form, although it has not yet constituted a complete application, the development of the application based on it is obviously subject to the framework's implementation environment, and the design pattern is language-independent, So it can be applied in a wider range of heterogeneous environments.

In short, the framework is software, and the design pattern is the knowledge body of software.

From: http://founderfix.com:81/showtopic-712.aspx

1. What is a pattern.
pattern, which is pattern. is actually the methodology to solve a certain kind of problem. You summarize the method of solving a certain kind of problem to the theoretical height, that is the pattern.
The classic definition given by Alexander is that each pattern describes a problem that continues to arise in our environment and then describes the core of the solution to the problem. In this way, you can use the existing solutions countless times without having to repeat the same work.
There are different fields in the model, there are architectural patterns in the architecture field, and design patterns in the field of software design. When a field matures, many patterns naturally arise.
What is a frame.
Framework, which is the frame. is actually an application of semi-finished products, is a set of components, for you to choose to complete your own system. Simply put, use someone else's stage, and you'll do the show. Moreover, the framework is generally mature and constantly upgraded software.

2. Why use patterns.
Because the pattern is a guide, under a good guide, help you to complete the task, help you to make a good design plan, achieve a multiplier effect. And will get the best solution to the problem.
Why use frames.
Because the development of software systems to today is very complex, especially server-side software, design to the knowledge, content, too many problems. Using other people's mature frameworks in some ways is tantamount to letting others do some basic work for you, and you just need to focus on the business logic design of your system. And the framework is generally mature, robust, he can handle a lot of details of the system, such as things, security, data flow control and other issues. And the framework is generally used by a lot of people, so the structure is very good, so the extensibility is also very good, and it is constantly upgraded, you can directly enjoy the benefits of others to upgrade the code.
Frameworks are typically in the middle tier between low-level application platforms (such as Java EE) and higher-layer business logic.


The architect is a new career in the software industry, and the job is to translate the customer's needs into a normative development plan and text in a software project development process, and to develop the overall architecture of the project to guide the entire development team through the program. Architecture design is the early stage of the software design process, which connects the requirements analysis with the design process. The architect's main task is not to write specific software programs, but to engage in a higher level of development architecture. He must be well aware of the development techniques and need to have good organizational management skills. It can be said that the quality of an architect's work determines the success or failure of the entire software development project.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.