设计模式的意义:增加系统健壮性,可维护性,可扩展性
六大原则
单一职责原则
Single responsibility principle,SRP
每个类只负责单一的功能,强调业务逻辑的单一 例如业务处理和数据库处理分离
里氏替换原则
Liskov Substitution principle,LSP
子类可以替换父类的功能,不会产生任何不期待发生的结果,也就是程序将不会产生任何错误和异常
里氏代换原则是实现开闭原则的重要方式之一,针对父类编程,在程序运行时再确定具体子类,因为原则上子类可以替换父类的功能 例如分页功能的实现
接口隔离原则
Interface Segregation Principle, ISP
接口最小化,接口中尽可能定义通用的方法,是所有实现类都有必要实现的方法。强调接口设计
如果定义了很多冗余的方法,一方面实现类不得不实现,另一方面会让使用者认为这个实现类拥有全部的方法实现,实际情况可能并非如此
依赖倒置原则
Dependence Inversion Principle,DIP
高层模块不该依赖于低层模块,二者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象
抽象是稳定的,而实现是易变的,只有我们的系统依赖抽象,才能保证系统的灵活性和可扩展性
迪米特原则
Law of Demeter 又叫作最少知识原则(The Least Knowledge Principle,TLKP)
一个类应该尽可能少的知道其他类的细节,因为一个类如果太依赖于其他类的细节,就会导致耦合度过高,相对应的一个类应该将细节高内聚于类的内部,所谓高内聚就是将一个类的细节高内聚于类的内部,否则其他类很容易依赖这个类的细节,导致系统的耦合度上升,牵一发动全身,不是一个好的系统设计!
开闭原则
Open Closed Principle, OCP
对修改关闭,对扩展开放
就是说任何的改变应该避免修改,而应该鼓励加入一些新的实现,来达到目的