1.OCP开闭原则
* 什么是OCP? OCP是软件七大开发原则当中最基本的一个原则:开闭原则 对什么开?对扩展开放。 对什么闭?对修改关闭。 * OCP原则是最核心的,最基本的,其他的六个原则都是为这个原则服务的。 * OCP开闭原则的核心是什么? 只要你在扩展系统功能的时候,没有修改以前写好的代码,那么你就是符合OCP原则的。 反之,如果在扩展系统功能的时候,你修改了之前的代码,那么这个设计是失败的,违背OCP原则。 * 当进行系统功能扩展的时候,如果动了之前稳定的程序,修改了之前的程序,之前所有程序都需要进行重新测试。这是不想看到的,因为非常麻烦。
2.依赖倒置原则(DIP原则)
* 什么是依赖倒置原则? 面向接口编程,面向抽象编程,不要面向具体编程。 * 依赖倒置原则的目的? 降低程序的耦合度,提高扩展力。 * 什么叫做符合依赖倒置? 上 不依赖 下,就是符合。 * 什么叫做违背依赖倒置? 上 依赖 下,就是违背。 只要“下”一改动,“上”就受到牵连。
真正的dip代码,每个上都只有接口连new都没有。
private UserDao userDao;
泛化关系 变成 关联关系。
new 对象----->注入属性。
3.里氏替换原则
子类可以扩展父类的功能,但不能改变父类原有的功能。
4.单一职责(功能)原则
这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。
5.接口隔离原则
要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。
定义是:客户端不应该被迫依赖于它不使用的方法。
另外一个定义:一个类对另一个类的依赖应该建立在最小的接口上。
以上两个定义的含义是:
要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。
6.迪米特法则
又叫作最少知识原则,
定义是:只与你的直接朋友交谈,不跟“陌生人”说话。
其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。
其目的是降低类之间的耦合度,提高模块的相对独立性。
“朋友”是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接访问这些对象的方法
7.合成复用原则
又叫组合/聚合复用原则,
它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。
如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。