In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-01-23 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Internet Technology >
Share
Shulou(Shulou.com)06/03 Report--
This book is Eric Evans 'lexicographical reference to Domain-Driven Design: Solutions to Software Core Complexity, which provides a quick look up of the concepts and concise explanations in Domain-Driven Design.
Last weekend, the hard disk file of the computer was lost inexplicably. It took more than half a week to recover. The original pdf of Domain Driven Design Reference was also lost. Fortunately, this article was translated in advance, but this time I couldn't proofread it again. I read it roughly and it was smooth. Everyone paid attention to it.
Other articles in this series:
Domain Driven Design Reference (Part 1)
Domain Driven Design Reference (2)-Making the Model Work
Domain Driven Design Reference (III)-Building Blocks of Model-Driven Design
Domain Driven Design Reference (IV)-Flexible Design
Domain Driven Design Reference (V)-Context Mapping for Strategic Design
Domain Driven Design Reference (VI): Refining Strategic Design
Domain Driven Design Reference (VII)-Large Strategic Design Structures
In a large system, there is nothing that allows elements to be interpreted according to their role in the overall design pattern, like a forest where developers cannot see trees. We need to be able to understand the role of individuals in the whole without delving into the details of the whole.
Large-scale structure is a language that allows you to discuss and understand systems broadly. A set of high-level concepts or rules, or both, establishes design patterns for an entire system. This organizing principle can guide design and aid understanding. It helps coordinate independent work because there is a common concept: how the roles of the individual parts shape the whole.
Therefore:
Design a pattern of rules or roles and relationships that will span the entire system and allow some understanding of each part of the overall system without understanding the responsibilities of that part in detail.
evolutionary order
Designless production systems are unintelligible and difficult to maintain. However, architecture can constrain a project with pre-designed assumptions and take a lot of power from developers/designers of specific parts of the application. Soon, developers will scale down applications to fit the structure, or they will break the structure and there will be no structure at all, which leads to problems of uncoordinated development.
Therefore:
Allowing this large conceptual architecture to evolve with the application may turn into a completely different architecture type in the process. Don't over-limit detailed design and model decision-making requires detailed knowledge.
When a structure can be discovered, it should be large-scale structure, which can greatly clarify the system without violating the premise of model development. Because an inappropriate structure is worse than none, it is best not to choose comprehensiveness, but to look for a minimal set to solve problems that have arisen. Less is more.
Then there are the large-scale structures of four specific patterns that appear in some projects and are representative of this pattern.
systematic metaphor
Metaphorical thinking is very common in software development, especially for models. But extreme programming practices of "metaphor," using metaphors to bring order to the development of the whole system, have become a special way.
Software design is often abstract and difficult to understand. Both developers and users need tangible ways to understand the system and share a view of the entire system.
Therefore:
When a concrete analogy to the system comes up, it captures the imagination of team members and seems to direct the mind in useful directions as a large-scale structure. Organize design around this metaphor and incorporate it into the universal language. System metaphor can not only facilitate communication about systems, but also guide the development of systems. This increases the consistency of different parts of the system, possibly even across different bounding contexts.
responsible layer
In object-oriented design, each object is assigned a set of related responsibilities. Responsibility-driven design also works on larger scales.
When each individual object has hand-crafted responsibilities, there are no guidelines, no uniformity, and no ability to work together on a wide range of domains. To achieve consistency in a large model, it is useful to impose some structure on the allocation of these responsibilities.
Therefore:
View conceptual dependencies in the model, as well as rates of change and sources of change in different parts of the domain. If you identify the natural levels in your domain, think of them as broad abstract responsibilities. These responsibilities should tell a story about the high-level goals and design of your system. Refactor the model so that the responsibilities of each domain object, aggregation, and module exactly match those of a layer.
knowledge level
One set of objects describes how another set of objects should behave.
In an application, roles and relationships between entities vary in different situations, and complexity can explode. It is neither a completely generic model nor a highly customized model that users need. Objects end up referencing other types to cover various situations, or attributes that are used differently in different situations. Classes with the same data and behavior may simply be assembled to accommodate different assembly rules.
Therefore:
Create a unique set of objects that you can use to describe and constrain the structure and behavior of the base model. Divide these concerns into two "tiers," one very specific and the other reflecting rules and knowledge that users or superusers can customize.
(See Fowler, M. 1997.) Analysis mode: reusable object model, Addison-Wesley.)
Pluggable component frame
Opportunities arise in a very mature model and are deep and refined. A pluggable component framework usually comes into play only after several applications have been implemented in the same domain.
When various applications must interoperate, all based on the same abstraction but designed independently, transitions between multiple bounded contexts limit integration. Sharing kernels is not feasible for teams that do not work closely together. Replication and fragmentation increase development and installation costs, and interoperability becomes very difficult.
Therefore:
Distill the abstract core of interfaces and interactions and create a framework that allows the various implementations of these interfaces to be freely substituted. Again, any application is allowed to use these components as long as it operates strictly through the interface of the abstract core.
Author: Zachary_Fan
Source: www.cnblogs.com/Zachary-Fan/p/DDDReference7.html
If you want to get the message push of personal self-written articles in time, please scan the QR code below ~.
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 254
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.