读书时期,我们很少接触设计模式,甚至学校课本里并没有系统说过设计模式。但是当我们使用各种框架时候,发现不管Spring、SpringMVC,包括JDK源码里面存在着各种各样的设计模式的身影。这让我们不得不打量下设计模式为什么具有如此大的能量。在看设计模式之前,首先应该了解六大设计原则:
一、单一职责原则
不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责,只有一个引起它变化的原因。
二、开放封闭原则
开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。为了实现这种效果,需要我们使用接口和抽象类。
解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
三、里氏替换原则
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。—— From Baidu 百科
解决方案:当使用继承时候,我们应当遵守里氏替换原则。当类B继承类A的时候,除了添加新的功能方法完成新的功能需求,不去重写父类A的方法,尽量也不要重载。
四、迪米特法则(最少知道原则)
一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。核心就是高内聚、低耦合。
五、接口隔离原则
每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。
六、依赖倒置原则
对接口编程,依赖于抽象而不依赖于具体。这其实是开放封闭原则的前提条件。
其实更多的我们尽量使用组合的方式,而不是直接使用继承的方式,在后续的设计模式的思想中我们能很直接的看出这条要求的好处。