Spring框架中含有的设计模式有哪些?

  1. IoC(Inversion of Control):控制反转模式,其基本思想是由容器控制程序之间的关系,而不是由代码直接控制。通过应用配置,实现对象的组装与初始化,并将对象之间的依赖关系交给 Spring 容器来管理。

  2. AOP(Aspect-Oriented Programming):面向切面编程,基本思想是将系统的功能分为核心关注点和横切关注点,通过在横切关注点上运用 AOP 技术,实现与核心关注点无关的功能增强,在不改变核心代码的情况下,提高了程序的可维护性和可扩展性。

  3. 工厂模式(Factory Pattern):Spring 框架使用工厂模式来实现对象的创建。Spring 容器负责创建对象,并维护对象的生命周期。

    下面通过一个简单的例子来说明工厂模式在 Spring 框架中的应用:
     

    // 定义接口
    public interface UserService {
        String getUserName();
    }
    
    // 实现接口
    public class UserServiceImpl implements UserService {
    
        @Override
        public String getUserName() {
            return "John Doe";
        }
    }
    
    // 定义工厂类
    public class UserServiceFactory {
    
        public static UserService getUserService() {
            return new UserServiceImpl();
        }
    }
    
    // 测试代码
    public class FactoryDemo {
    
        public static void main(String[] args) {
            // 获取用户服务对象
            UserService userService = UserServiceFactory.getUserService();
    
            // 使用用户服务对象
            String userName = userService.getUserName();
            System.out.println("User name: " + userName);
        }
    }

    在上述代码中,我们定义了一个接口 UserService 和一个实现该接口的类 UserServiceImpl,用于模拟一个用户服务。然后,我们定义一个工厂类 UserServiceFactory,该类中实现了一个静态工厂方法 getUserService(),用于返回 UserServiceImpl 的实例。

    最后,在测试代码中,我们使用静态工厂方法 UserServiceFactory.getUserService() 获取一个 UserServiceImpl 的实例,然后使用该实例的 getUserName() 方法获取用户名称。

    在 Spring 的实际应用中,工厂模式通常与 IoC 容器一起使用。容器负责实例化对象,即通过反射等方式创建对象,并维护其生命周期。在 Spring 框架中,所有的 bean 对象都是在容器中被创建和管理的。例如,使用 XML 配置文件声明一个 bean:

    <bean id="userService" class="com.example.UserServiceImp" />

    在 Spring 容器启动时,容器会自动创建 UserServiceImp 的实例,并把该实例注册到容器的 Bean 容器中,然后可以使用 getBean() 方法获取该实例。
     

  4. 单例模式(Singleton Pattern):Spring 容器默认将 bean 容器中的对象作为单例模式的,也可以显式指定 bean 的作用域。
    单例模式的三种创建方式以及他们最本质的区别:
    懒汉模式:时间换空间,会存在线程安全问题,需要在写的静态方法上面添加“synchronized



     饿汉模式:空间换时间,在一开始就创建对象,这样就不会存在线程安全问题,下面是列子:

     

    枚举法模式:枚举法 本质上就是一个常量,所以直接写常量就行了(注意是大写):

     

     

  5. 模板方法模式(Template Method Pattern):Spring 提供了基于模板方法模式的 JdbcTemplate,用户只需要实现回调接口中的 SQL 方法即可完成数据库操作。

  6. 观察者模式(Observer Pattern):Spring 中的事件机制就是基于观察者模式实现的,通过注册监听器,可以监听特定事件的发生,并在事件发生时执行相应的逻辑。

  7. 策略模式(Strategy Pattern):Spring 中的对策略模式的应用体现在 AOP 的切面类中,定义了不同的增强行为,可以根据需要进行组合或替换其中的增强行为等。

  8. 适配器模式(Adapter Pattern):Spring MVC 中的 HandlerAdapter 就是基于适配器模式进行设计的,用于将不同类型的请求适配为处理器可以处理的类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值