设计模式(Design pattern)是一种思想,是一套被反复使用的代码设计经验总结,专门用于解决特定场景的需求。它提供了在软件开发过程中面临的一些问题的最佳解决方案,使用设计模式是为了提高代码的可重用性、让代码通俗易懂,增加代码可靠性。
开闭原则:对扩展开放,对修改关闭。就是如果要修改原有的功能或者是扩展功能,尽量去扩展原有的代码,而不是修改原来已有的代码。
里氏替换原则:任何子类对象都应该可以替换其派生的超类对象 。即,子类可以扩展父类的功能,但不要修改父类原有的功能。 也就是说,当一个子类继承父类后,尽量不要去重写它原有的方法。
依赖转置(依赖倒置)原则:要面向接口编程,不要面向实现编程。两个模块交互时,都访问各自接口,而不是具体的实现类。
单一职责原则:一个对象要专注于一种事情,不要让它担任太多责任。
接口隔离原则:一个接口尽量只包含用户关心的内容。就是一个接口不要太庞大。
迪米特法则:如果两个软件实体之间不是特别必要,尽量不要让他们直接通信。而是找个第三方进行转发,比如使用MQ(消息队列)。
合成复用原则:如果在“组合/聚合”和“继承”之间做抉择时,优先选择“组合/聚合”。
创建型模式:用于创建对象的设计模式。一般可以简化用户创建对象的过程。其次可以降低耦合度,用户不需要关心对象具体的创建过程。包含:单例模式、原型模型、工厂模式、建造者模式。
结构型模型:组织对象之间的结构。使其易于扩展等。包括:代理模式、适配器模式、桥接模式、装饰器模式、外观模式、享元模式、组合模式。
行为模型:主要用于决定对象如何做出行为包括:模板方法模式、策略模式、命令模式、责任链、状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式。
1)提高代码复用率,降低开发成本和周期;
2)提高代码可维护性、可拓展性;
3)使代码更加优雅、更容易被他人理解。
开闭原则要求你的代码对扩展开放,对修改关闭。这个意思就是说,如果你想增加一个新的功 能,你可以很容易的在不改变已测试过的代码的前提下增加新的代码。有好几个设计模式是基 于开闭原则的,如策略模式,如果你需要一个新的策略,只需要实现接口,增加配置,不需要 改变核心逻辑。一个正在工作的例子是 Collections.sort() 方法,这就是基于策略模式,遵循 开闭原则的,你不需为新的对象修改 sort() 方法,你需要做的仅仅是实现你自己的 Comparator 接口。
如果两个对象彼此有关系,就说他们是彼此相关联的。组合和聚合是面向对象中的两种形式的 关联。组合是一种比聚合更强力的关联。组合中,一个对象是另一个的拥有者,而聚合则是指 一个对象使用另一个对象。如果对象 A 是由对象 B 组合的,则 A 不存在的话,B一定不存在, 但是如果 A 对象聚合了一个对象 B,则即使 A 不存在了,B 也可以单独存在。