OO原则————面向对象编程思想的五大原则:
1.SRP(Single Responsibility Principle)————单一职责原则
单一职责就是一个设计元素只做一件事。
2.OCP(Open Close Principle)————开闭原则
开闭原则就是对修改关闭,对扩展开放(Closed for Modificetion;Open for Extension)。
3.LSP(Liskov Substitution Principle)————里氏替换原则
子类应当可以替换父类并出现在父类能够出现的任何地方。这个原则是Liskov于1987年提出的设计原则。它同样可以从Bertrand Meyer 的DBC(Design by Contract)的概念推出。我们以学生为例,夜校生为学生的子类,因此在任何学生可以出现的地方,夜校生均可出现。这个例子有些牵强,一个能够反映这个原则的例子是圆和椭圆,圆是椭圆的一个特殊子类。因此任何出现椭圆的地方,圆均可以出现。但反过来就可能行不通。
运用替换原则时,我们尽量把类B设计为抽象类或者接口,让C类继承类B(接口B)并实现操作A和操作B;运行时,类C实例替换B,这样我们即可进行新类的扩展(继承类B或接口B),同时无须对类A进行修改。
4.DIP(Dependence Inversion Principle)————依赖倒置原则
依赖倒置原则的核心是:要依赖于抽象,不要依赖于具体。【面向接口编程/面向接口编程】
依赖倒置原则要求客户端依赖于抽象耦合。即:抽象不依赖于细节,细节依赖于抽象;针对接口编程,不针对实现编程。
5.ISP(Interface Segregation Principle)————接口分隔原则
简单来说就是一个接口只处理一项相关的事情。例如:IDAO只处理连接数据库的sql语句,IRowMapper只处理映射关系。而不是把RowMapper的映射方法集成到DAO一个接口中。
采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。ISP原则是另外一个支持诸如COM等组件化的使能技术。缺少ISP,组件、类的可用性和移植性将大打折扣。这个原则的本质相当简单。如果你拥有一个针对多个客户的类,为每一个客户创建特定业务接口,然后使该客户类继承多个特定业务接口将比直接加载客户所需所有方法有效。