七大设计原则
七大原则:
单一职责原则 SRP: 一个类提供的功能越少越好,这样引发该类被修改的可能性就会越少,维护成本就会越低
开放封闭原则 OCP: 尽量通过增加代码的方式扩展一个类的功能,而不要修改现有代码
里氏替换原则 LSP: 子类可以替换父类(多态)
接口隔离原则 ISP: 接口中申明的方法尽可能形成统一算法簇(多实现)
依赖倒转原则 DIP: 高端类尽可能依赖于 接口,而不要依赖于低端子类(面向抽象开发,而不要面向实现)
迪米特法则 LOD:不同粒度下类与类之间的关联关系越少越好(朋友最少原则),写代码害羞一点
合成,复用,聚合原则 CARP:尽量通过组合的方式编码,而不要通过继承
KISS:简单
CHANGE:让软件有弹性,应对客户需求的变化
DRY:消除冗余,让代码保持精炼
单一职责原则:
一个类(或者大到模块,小到方法)承担的职责越多,它被复用的可能性越小,而且如果一个类承担的职责
过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作。(只做一件事)
开放封闭原则:
一个软件实体应当对扩展开放,对修改关闭。也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的
前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为。(考虑要全面)
里氏替换原则:
在软件中如果能够使用基类对象,那么一定能够使用其子类对象。把基类都替换成它的子类,程序将不会产生
任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类的话,那么它不一定能够使用基类。
接口隔离原则:
接口隔离原则是指使用多个专门的接口,而不使用单一的总接口。每一个接口应该承担一种相对独立的角色,不多
不少,不干不该干的事,该干的事都要干。(USB接口),要满足单一职责
依赖倒转原则:
简单来说,依赖倒转原则就是指:代码要依赖于抽象的类,而不要依赖于具体的类;要针对接口或抽象类
编程,而不是针对具体类编程。开闭原则的关键是抽象化,并且从抽象化导出具体化实现,如果说
开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要手段。
迪米特法则:
迪米特法则就是指一个软件实体应当尽可能少的与其他实体发生相互作用。这样,当一个模块修改时,
就会尽量少的影响其他的模块,扩展会相对容易,这是对软件实体之间通信的限制,它要求限制软件
实体之间通信的宽度和深度。
合成,复用,聚合原则:
合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为
新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。
简言之:要尽量使用组合/聚合关系,少用继承。
今天看到一个写的比较全的,拿过来和大家分享一下。http://www.cnblogs.com/sunflower627/p/4718702.html