Recently, I'm watching agile software development, so I wrote the learning note, and I also explain that I have seen agile software development, haha; learning-oriented technology has a step-by-step process, and object-oriented must have some principles (single single The responsibility is one), then it is the method (pattern, I know why do you do this, I know the benefits of multiplexing), don't say these, start my understanding of the single responsibility! (Maybe it may be correct, if there is a different opinion, please refer to it); a single responsibility (SRP: The Single Responsibility Principle) is a case, there should be only one reason that caused it; that is, it can only be completed. Its responsibilities, such as: a module that is responsible for drawing, it is responsible for outputting various different information on output devices, and complex model calculations, input parameters are not their duties, to draw It is highly polymerized, the model is calculated, the input is loose, and the model calculation and expansion is invisible; it will bring odor, so-called change, it is very simple, it seems very simple. But how to determine a single responsibility border problem, this is also the problem I have been troubled, maybe I have to get it in practice; just like the modem problem in the book: Class Modem {public void Dial (String PNO); public packet void hangup (); public void send (char c); PUBLIC VOID REC ();} It seems that this class is normal, but it has two different responsibilities, one is connection management, two is message management; this I have to see that you are in practice, see if you should be divided into two classes. (Very concealed, if there is a better idea, please explain, thank you first :) It seems simple, it is actually really difficult to do this in practice.