设计模式面试总结
你用过哪些常见的设计模式
策略模式
定义了算法簇,分别封装起来让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
先设计插件类,然后定义插件的基础方法,比如数据校验,数据筛选,数据下发。这些在不同的类型中的实现是不一样的。不同的分类插件分别实现这些基础方法。具体的插件实现类中进行组合。也就完成了不同类型插件执行不同类型策略。
工厂模式
根据获得的标识调用不同的工厂,创建不同的实例教给调用方去整合。
单例模式
需要自己使用的教给Spring去管理,这些满足单例模式。
适配器模式
代理模式
代理模式:代理类和被代理类实现共同的接口(或继承),代理类中存有指向被代理类的索引,实际执行时通过调用代理类的方法、实际执行的是被代理类的方法。
设计模式六大原则
- 开闭原则 : 对扩展开放,对修改关闭
- 里氏代换原则: 任何基类可以出现的地方,子类一定可以出现,LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现.
- 依赖倒转原则: 这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于具体。
- 接口隔离原则:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度的意思.
- 迪米特法则(最少知道原则):一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。
- 合成复用原则:原则是尽量使用组合的方式,而不是使用继承,比如增加的功能和方法尽量多用组合,可以达到更好的复用效果,若使用继承,那么这次继承带来的扩展其他类是无法使用的。