There are many factors to consider in software design. maintainability is very important. Generally, software has a life cycle. Software features poor adaptability, and many design modes provide better maintainability for the system.
There is a well-known open/close principle in the OO design. This name is strange and confusing. In fact, it means that the existing functions are not modified and affected when the software functions are extended. Software taboos are something like a global variable.
Recently, Mr Wen of loosely coupled space proposed a benign dependency principle (http://lcspace.nease.net/dvp-agile/agileood.html) that should avoid changing things easily. This is naturally good, but I think the most taboo of software is not changes, but diffuse changes, that is, the reconstruction of the bounce attack mentioned in the book. The specific countermeasure is to encapsulate the changes and reduce the impact of the changes on the system.
Therefore, a good Maintainability Design encapsulates a change design with foresight. Block the fire of change like a firewall.