Spring中涉及的设计模式
Spring框架中集成很多开发者优秀的设计理念和编程实践,
其中设计模式的使用显得尤为重要
设计模式的使用可以很好的做到"对象键松耦合"、“针对接口编程”,
从而设计出易维护、易扩展、易复用、灵活性好的框架
- Spring中涉及的设计模式主要有:
-简单工厂模式
-工厂方法模式
-单例模式
-适配器模式
-包装类模式
-代理模式
-观察者模式
-策略模式
-模板模式
简单工厂模式:
优缺点
优点:只需要传入一个正确的参数,就可以获取所需要的对象而无须知道其创建细节。
缺点:工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违背开闭原则。
适用场景:工厂类负责创建的对象比较少。
单例模式:模式作用介绍
单例模式具有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例
单例设计模式所解决的问题就是:保证类的对象在内存中唯一。
- 优点
提供了对唯一实例的受控访问。
由于在系统内存中只存在一个对象,因此可以节约系统资源,
对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。
可以根据实际情况需要,在单例模式的基础上扩展做出双例模式,多例模式。 - 缺点
单例类的职责过重,里面的代码可能会过于复杂,在一定程度上违背了“单一职责原则”。
如果实例化的对象长时间不被利用,会被系统认为是垃圾而被回收,这将导致对象状态的丢失。
简单工厂模式(Simple Factory)
简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。
在简单工厂模式中,可以根据参数的不同返回不同类的实例。
简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
优缺点
优点:只需要传入一个正确的参数,就可以获取所需要的对象而无须知道其创建细节。
缺点:工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,违背开闭原则。
适用场景:工厂类负责创建的对象比较少。
适配器模式(Adapter Pattern) ######模式作用介绍
适配器模式(Adapter Pattern):将一个接口转换成客户所希望的另一个接口,
使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。
适配器模式分两种:类适配器和对象适配器
使用继承(就是所谓的类适配器模式)
使用组合(所谓的对象适配器模式)
先讲类适配器,类适配器把适配的类的API转换成目标类的API,类适配器所涉及的角色有:
1、目标角色
这是所期待得到的接口
2、源角色
现在需要适配的接口
3、适配器角色
模式的核心,适配器把源接口转换成目标接口
核心思想就是:有一个Adapee类,拥有一个方法,待适配,
目标接口是Target,通过Adapter类,将Source的功能扩展到Targetable里
适配器模式优缺点分析:
优点
1、有更好的复用性。系统需要使用现有的类,但此类接口不符合系统需要,通过适配器模式让这些功能得到很好的复用
2、有更好的扩展性。实现适配器,可以调用自己开发的功能
缺点
过多使用适配器会使得系统非常凌乱,明明调用的是A接口,内部却被适配成了B接口。因此除非必要,不推荐使用适配器,而是直接对系统重构
适用场景:
1 软件系统结构需要升级或扩展,又不想影响原有系统稳定运行的时候
2 转换类之间的差別不是很大的时候
3 想创建一个可以复用的类,该类可以与其他不相关类或不可预见类协同工作的时候
`
策略模式(Strategy Pattern)
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。
这种类型的设计模式属于行为型模式。
在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。
策略对象改变 context 对象的执行算法。策略模式实际就是一堆算法族的封装。
优点:
1.上下文和具体策略是松耦合关系。因此上下文只知道它要使用某一个实现Strategy接口类的实例,但不需要知道具体是哪一个类。
2.策略模式满足“开-闭原则”。当增加新的具体策略时,不需要修改上下文类的代码,上下文就可以引用新的具体策略的实例。
未完待续…