"You don't have to strictly abide by these principles, and violate them will not be punished by religious penalties. But you should look into a warning, if you violate one of them, then the alarm bell will ring." "You don't have to strictly abide by these In principle, it is not subject to religious punishment. But you should see these principles into a warning, if you violate one of them, then the alarm bell will ring. "-------- Arthur J .Riel (1) All data should be hidden inside the location of the class. The user of the P13 (2) class must depend on the common interface of the class, but the class cannot rely on its users. P15 (3) minimize the message in the protocol of the class. P16 (4) Implementing all classes of the most basic public interface [for example, copy operation (deep copy and shallow copy), equivalent judgment, correct output content, from ASCII description, etc.]. P16 (5) Do not place the implementation details (such as a private function to place a shared code) in the public interface of the class. P17 If two methods of the class have a public code, you can create a private function that prevents these public code. (6) Do not disturb the public interfaces that users who cannot use or not interested. The P17 (7) class should be zero or only the export coupling relationship. That is, a class either does not have a relationship with another class, or only the operation in another class's public interface. The P18 (8) class should only represent a key abstraction. All classes in the P19 package should be commonly closed for changes in the same type of nature. A variation is influenced to a packet, it will affect all classes in the package, and other packets do not have any effects. (9) Content set the relevant data and behavior. P19 designers should pay attention to objects that get data from other objects through the GET. This type of behavior suggests that this experience principle is violated. (10) Place the unrelated information in another class (that is, the behavior that does not communicate with each other). P19 is dependent on a stable direction. (11) Make sure the abstraction of your modeling is class, not just the role of the object. P23 (12) is uniformly distributed in the horizontal direction, namely: according to the design, the top level should be unified to share the work. P30 (13) Do not create a full range / object in your system. It is particularly careful to include Driver, Manager, System, and Susystem. P30 plans an interface instead of implementing an interface. (14) Carefulness to define a large number of access methods in the public interface. A large number of access methods means that the relevant data and behavior are not centralized. P30 (15) is more careful to the class containing too many mutual communication. Another expression of P31 This is a lot of GET and SET functions in the public interface of the classes in your application. (16) In applications consisting of object-oriented models interacting with the user interface, the model should not depend on the interface, and the interface should depend on the model. P33 (17) is modeled as much as possible (we often avoid this principle in order to comply with the principles of system functionality, avoid all-round principles, and the principles of focus on relevant data and behavior). P36 (18) removes unwanted classes from your design. P38 Generally, we will degrade this class into an attribute. (19) Remove the class outside the system. The features of the P39 system are characterized by abstraction to send messages to the system field but do not accept other classes in the system. (20) Do not turn the operation into a class. Questioning any name is a verb or derived automatic word, especially if there is only one meaningful class. Consider whether the meaningful behavior should be migrated to a certain class that already exists or has not found out. P40 (21) We often introduce proxy classes when creating an application's analysis model. In the design phase, we will often find that many agents are useless and should be removed. P43 (22) minimize the number of collaborators of classes. The number of other classes used by P52 should be as small as possible. (23) minimize the number of messages transmitted between classes and collaborators. P55