Author's interview
The new book "design model -- Based onC #In the publication of "engineering implementation and expansion", Xiaolin, editor of The Bowen viewpoint, interviewed him via email. Now he has compiled the dialogue between the edited blog and Mr. Wang to help readers.
Bowen Kobayashi
Hello, Miss Wang! The design model you are about to publish-based onC #Engineering implementation and expansion, a new book written by you based on your project experience. There are already some23Some of the design patterns have been recognized by the market and readers.23Which new elements are integrated into the mode? What are these elements helpful to readers?
Wang
Xiang
The design pattern is a set of ideas. I am a developer, and sometimes I feel that it is necessary to consider how to implement it in combination with application functions.
With the help of my masters, colleagues, and leaders. NetProjects, I loveC #Language, found in useC #There are many characteristics when implementing some design patterns.
Although many of the models in this book are limited in terms of extensions, I hope to use them as an introduction& C #Language friends have a basis for discussion and constantly improve this part of content.
Starting from the above writing purpose, I mainly hope the book can help the actual work in the following ways:
- breaks some inherent routines.
- use C # solve the problem of easy change with simple and direct means.
- do not just frame the dependency on the object system, the features of participants in different life cycles of application development and O & M should be taken into account, and dependencies should be extended to objects, configuration systems, data storage and service systems.
- for Web hybrid information system and service-oriented.
Bowen Kobayashi
EachProgramMembers are individuals with independent personalities. These personalities will affect learning methods and thinking, what do you think are the key points of attention when programmers learn and use design patterns for development?
Wang
Xiang
As program developers, we are always more or less close to perfection when dealing with our own work.
CodeThe class library and application framework are not only the products in the eyes of the boss and the Project Manager, but also the fruits of our own work. Although we can accept "the only thing that remains unchanged is the change itself ", however, it is not pleasant to modify your own code, especially when the upstream demand is not certain.
We need to learn from and apply those mature routines, abstract changes and concentrate on several points, and then hand them over to the O & M personnel for processing, while we focus more time on creative work.
Therefore, the model is ready for use, but the implementation routine depends on oneself.
If we say what attitude we use in development is the most important thing, I have two points:
- Minsi (not just routines, but not local ).
- (When adapting to changes and applying certain or certain patterns based on context needs, the features supported by the syntax,FCLThen, a complete set of system types will not be constructed, but will be directed to the purpose ).
Bowen Kobayashi
Design Pattern-based onC #In the book "engineering implementation and expansion", we have seen your years of experience accumulated and summarized. So for beginners of a design model, do you have any good suggestions for them (her) when learning the design model and the book? What are common and effective solutions to unpredictable problems?
Wang
Xiang
I am a regular person, so my suggestions may take effect slowly. In my opinion, although the design model is an idea, it requires a solid foundation for an object-oriented language.
Take myself as an example.
contact . net because of a project that my master thinks is useful . net to achieve good results, then I went to the master to stick to my feet, master opens . net Framework SDK documentati On , pointing to the Language Reference C # section and programming. net Framework : "This is what you want ".
I don't know if I 'd like to give me some advice. I remember hisMSN personal messageIs "smart people know how to be stupid ".
Now that the master has made such an arrangement, I just plunged into it.. Net SDK,7Months Later. NetThe project has been postponed, but I have read all the documents,C #I also read the language reference twice, and all the sample code has been debugged.
Then we can see the design pattern: the basis for reusable object-oriented software. The first time I read it, I often think "Oh, this is tooCool, There are gains, "but when reading the second time, there are many places that will feel" so troublesome, useC #All at onceOK".
Therefore, the design pattern is ideological, but you need to make more preparations in terms of language. When learning, you must dare to deny the routines that you are already familiar with, or even the ones proposed in the classics, I should give myself a goal for continuous breakthroughs. After criticism and self-criticism, I should read "design pattern: the basis for reusable object-oriented software", so I should have more experiences and gains.
As for the difficulties, my master also said, "The Power of repetition". If you can't see it clearly, you can press the keyboard to debug it. After several times, there will suddenly be an epiphany. The most difficult part of this book isVisitorMode.ObserverAndProxyThere is also a jump process, you can also use the "repeated power" to defeat it.
Bowen Kobayashi
You have been engaged in many large-scale development projects in the national customs information center. What are your daily responsibilities? This book attaches importance to the engineering implementation and expansion of design patterns. What are the links between these Engineering Contents and your work? How do you embody engineering ideas in the book?
Wang
Xiang
My responsibilities include:
- As a senior technical architect of the Development Department, he is mainly responsible for the development of industry business systems.
- As a member of the Information Security Working Group, they participate in the implementation and expansion of public key projects.
- As a member of the Optimization Team, participate in the optimization of major business systems in the industryDo more with less.
The content of this book is basically abstracted and simplified from the past few years of work experience. Although the title is "engineering", it focuses more on "functional features of engineering implementation ", because fault tolerance, confidentiality, exception handling, high availability, lock and concurrency management are basically not reflected in the example.
However, this book also mentions how to transparently add these mechanisms and introduces plug-and-play modes. I hope you do not miss this.
The industry I work for is a fast-changing industry with annual growth rates in recent years20%At the same time, it is rapidly changing with globalization and regionalization. Because of the changing requirements of the business, the corresponding processing must be done technically. Therefore, I have never given up on the design pattern: the basis for reusable object-oriented software.
In the past few years, the degree of standardization of the industry has been greatly improved.Web 2.0,SOAThe concepts of cloud computing and nano computing are also emerging.XMLMethods are both necessary and mandatory. I hope some of these methods can also be used in other industries.
Bowen Kobayashi
In the classic23In addition to the design patterns, you have also expanded some architecture patterns in the book, suchWeb ServiceMode. Which of the following do you consider? What are the necessary knowledge preparations before going into these models?
Wang
Xiang
Project needs. It is estimated that other projects are more and more involved.
When you complete a project, different types of models may be compatible with each other ".
I have a bit of experience, no matter what type of model, even if it is called "architecture", there should be a "Operation surface" (referring to the frequently used words in the geological and energy industries ), every time it passes through abstraction and simplification, No matter what mode actually faces is a relatively limited small scene, what is saved in the mind is not a hierarchical classification mode, but a long list, then select the appropriate one based on the context. The so-called architecture mode and class level must be used instead of the architecture level: the limitations of Object Relationships in the basics of object-oriented software can be reused. Based on componentization and servitization, we can easily obtain this "job surface ".
As for these extensions, the preparation knowledge is still classic.Gof23And development experience in related fields.
In addition, it is a pity that the data access mode, integration mode, information security mode in the public key system, XML design mode, and database design mode are not covered in this book, I hope I can add them.