The Art of Software Framework Design Chapter 1 The Art of Software Development 4
1.1 Rationalism, Empiricism and Thread-free 4.2 The evolution of software 6
1.3 Large-scale software 8
1.4 Beautiful, Truth and Elegance 9
1.5 Better Thread-free 12
Chapter 2 Power Source of api Design 14
2.1 Distributed Development 14
2.2 Modular Application 16
2.3 Communication is everything 2
2.4 Empirical Programming 22
2.5 It is usually easier to develop the first version 24
. 26
3.1 method and field signature 26
3.2 file and its contents 27
3.3 environment variables and command line options 29
3.4 text information is also a broad definition of api 3
3.5 protocol 32
3.6 behavior 35
3.7 internationalization support and information internationalization 35
3.8 api. I's quality 37
3.9.1 Understandability 37
3.9.2 Consistency 38
3.9.3 Visibility 39
3.9.4 Simple tasks should have simple schemes 4
3.9.5 Protection of investment 4
Changing objectives 44 in Chapter 4. 1 source code compatibility 43
4.2.2 binary compatibility 44
4.2.3 functional compatibility-amoeba effect 5
4.3 importance of use case orientation 52
4.4 api design review 55
4.5 life cycle of an api 56
4.6 gradual improvement 6 Chapter 5 only discloses you. Field 68
5.2 Factory method is superior to constructor 7
5.3, making all contents unchangeable 71
5.4, avoiding abuse of setter method 72
5.5, exposing functions as much as possible through friends 73
5.6, giving object creators more rights 77
5.7, avoiding exposure of deep inheritance 82
Chapter 6, interface-oriented. 85
6.1 removing method or field 87
6.2 removing or adding a class or interface 88
6.3 adding an interface or class 88
6.4 adding method or the difference between interface and class in field 88
6.5 java 9
6.6 Advantages behind weaknesses 91
6.7 adding method. > 6.8 is abstract class useful? 94
6.9 Be prepared for adding parameters 95
6.1 interface vs. Class 97
Chapter 7 Modular architecture 98
7.1 Types of modular design 1
7.2 Component positioning and interaction 13
7.3 Write an extension point 116
7.4 loop. Lookup 121
7.6 Abuse of Lookup 126
In Chapter 8, when designing api, we should distinguish its target user group 129
8.1 c and how to define api in java language and spi 129
8.2 api evolution is different from spi evolution 131
8.3 Java.io.writer. This class evolved from jdk 1.4 to jdk 5. Go into 131
8.4 Reasonably decompose api 143
Chapter 9 Keep in mind testability 147
9.1 The aura of api design and testing 148
9.2 specification is fading 151
9.3 Good tools make api design simpler 153
9.4 Compatibility test suite 155
Chapter 1 Collaboration with other APIs 158. Using third-party api 158
1.2 only exposes abstract content 162
1.3, strengthens the consistency of api 164
1.4, proxy and combination 168
1.5, avoids the misuse of api 176
1.6, and does not abuse the listener mechanism of javabeans 18
Chapter 11, some contents of specific api runtime 184 < 1 don't take risks 186
11.2 reliability and thread-free 189
11.3 synchronization and deadlock 191
11.3.1 describe the trap in Java monitors 193
11.3.3 conditions that trigger deadlock 196
11. Line Test 24
11.3.6 Analysis of Random Faults 26
11.3.7 Advanced Use of Logs 28
11.3.8 Using Loggers to Control Flow 21
11.4 Circular Calls 215
11.5 Memory Management 218
Chapter 12 Declarative Programming. Immutable behavior 229
12.3 Document compatibility 23 Chapter 13 Extreme opinions are harmful and useless 236
13.1 api must be beautiful 237
13.2 api must be correct 237
13.3 api should be as simple as possible 24
13.4 api must be high performance 242
13.5 api must be absolutely compatible. 42
13.6 api must be symmetrical 245
Contradictions in api design in Chapter 14 247
14.1 Contradictions in API design 248
Work hidden behind 14.2 251
14.3 Don't be afraid to release a stable api 252
14.4 to reduce maintenance costs 255
. > 15.1 Rejuvenate the problematic class library 259
15.2 Consciously upgrade and unconsciously forced upgrade 265
15.3 Optional behavior 268
15.4 Bridge and * * similar to api. Save 274
Chapter 16 Teamwork 286
16.1 Conduct code review when submitting code 286
16.2 Persuade developers to provide documents for their api 29
16.3 Conscientious monitors 292
16.4 Accept the patch of api 297
Chapter 17 Improve api design skills with contest games 3 < On the first day of 3
17.2, 31
17.2.1, the problem 34
17.2.2, the problem 34
17.2.3, the problem 38
17.2.4, the problem 39 < 313
17.3.1 I want to correct the mistakes I made. 316
17.3.2 The solution for the next day 317
17.4 The third day: Judgment Day 32
17.5 Let's play this game, too. 327
Chapter 18 can expand the case of visitor mode 328
> 18.3 the default traversal 334
18.4 clearly defines the data structure when each version 337
18.5 is improved in one direction 339
18.6.
18.7 visitor mode 341
18.8 for users and developers, triple scheduling 343
18.9 visitor mode 345. .1 Grammar Tips 346
The process of the demise of Chapter 19 348
19.1 The importance of defining the version 349
19.2 The importance of module dependence 349
19.3 Do the removed parts need to be kept permanently 352
19.4 Decomposing the huge api 352
Chapter 2 Future 356
28. .2 Endless Thread 358
2.3 api Design Methodology 36
2.4 Evolution of Programming Language 361
2.5 The Role of Education 363
2.6 * * Enjoy 365
Bibliography 366