本文已参与「新人创作礼」活动,一起开启掘金创作之路。
常见设计模式
总的设计模式有23种,可以分为三大类。
1、创建型模式(共五种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
2、结构型模式(共七种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
3、行为型模式(共十一种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
在Spring框架中都用到了哪些设计模式,并举例说明?
工厂设计模式 : Spring使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。
代理设计模式 : Spring AOP 功能的实现。
单例设计模式 : Spring 中的 Bean 默认都是单例的。
包装器设计模式 : 我们的项目需要连接多个数据库,而且不同的客户在每次访问 中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态 切换不同的数据源。
观察者模式: Spring 事件驱动模型就是观察者模式很经典的一个应用。
适配器模式 :Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配Controller。
设计模式的原则有哪些?
设计模式共有六大原则,分别是:单一职责原则、开闭原则、里氏代换原则、依 赖倒转原则、接口隔离原则、迪米特法则。
单一职责:一个类只负责一个功能领域中相应的职责,或者可以定义为:就一个类而 言,应该只有一个引起它变化的原因。
开闭原则:软件实体应该对扩展开放,对修改关闭。其含义是说一个软件实体应该通过扩展 来实现变化,而不是通过修改已有的代码来实现变化。
里氏代换原则:通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不 会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不 行了,有子类出现的地方,父类未必就能适应。
依赖倒转原则:这个是开闭原则的基础,具体内容:真对接口编程,依赖于抽象而不依赖于 具体。
接口隔离原则:使用多个隔离的接口,比使用单个接口要好。还是一个降低类之间的耦合度 的意思,从这儿我们看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为了升级和维护方便。所以上文中多次出现:降低依赖,降低耦合。
迪米特法则:为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生 相互作用,使得系统功能模块相对独立。