1、工厂模式(spring 中的 beanFactory)
工厂模式是定义了创建实例的方法,然后让各个具体的工厂去创建对应的实例,屏蔽了实例化对象的整个过程和创建逻辑。
优点:1、一个调用者想要创建对象,使用工厂类获取,不需要知道创建的具体逻辑。2、扩展性好,需要曾家一个产品时只需要扩展工厂类就可以了。
缺点:每次增加产品时都要增加具体的类与对象实现工厂,是系统中的类的个数增加,在一定的程度上增加了系统的复杂性。
复制代码
2、单例模式(getSingleTon()创建 bean[在配置为 singleton 的时候])
单例模式是一种创建类型模式,它使得一个类只能有一个单一的实例对象;
单例模式实现:1、私有化构造器(使外部不能通过new 创建或者反射形式创建)2、提供实现对象的public静态方法;
复制代码
实现方法有:懒汉式,饿汉式(线程安全),双检锁
public class Singleton{
// 注意一定要加 volatile 不然高并发的情况下可能会出现 返回没有初始化过的对象
private volatile static Singleton singleton;
private Singleton(){}
if(singleton == null){
synchronized(Singleton.class){
if(singleton == null){
singleton = new Singleton();
}
}
}
复制代码
}
3、模板方法
4、代理模式(aop 的实现使用了动态代理和 CGLIB 代理)
5、装饰器模式(源码中带有 wrapper 或者 Dectorator 的类)
6、观察者模式(事件驱动模型,listener 的接口)
7、适配器模式(spring 中的一些 adapter)
8、策略模式(加载资源源文件时,使用了不同的方法,如 classPathResource,urlResource)
评论