后端与系统架构1507 字

Spring框架用到的设计模式

·全库 364 / 611

《Spring框架用到的设计模式》共 0.2 万字,通篇围绕 权限 展开,归在「后端与系统架构」这一层。

覆盖权限

适合给 AI 系统搭底座、要管得住的人

目录骨架(6 节)
  1. Spring框架用到的设计模式
  2. ```java
  3. public class Singleton {
  4. //私有构造
  5. private Singleton(){
  6. if(singleton == null){

Spring框架作为一个广泛使用的Java企业应用开发框架,使用了许多设计模式来实现其灵活性和扩展性。以下是一些在Spring中常见的设计模式:

  1. 单例模式(Singleton Pattern): Spring默认情况下,Bean是单例的。也就是说,Spring容器会确保每个Bean只有一个实例,该实例在整个应用中会被共享使用。
package com.tuling.interview.Spring框架用到的设计模式.单例模式;

public class Singleton {

    private volatile static   Singleton singleton  = null;

    //私有构造
    private Singleton(){

    }
    
    public static Singleton getSingleton(){
        if(singleton == null){
            synchronized (Singleton.class){
               if(singleton == null){
                   singleton = new Singleton();
               }
            }
        }
        return singleton;
    }

}

2.工厂模式(Factory Pattern): Spring中的BeanFactory和ApplicationContext是工厂模式的典型例子,它们用于创建和管理Bean的实例。

package com.tuling.interview.Spring框架用到的设计模式.工厂模式;

public class Factory {

    public static void main(String[] args) {

        ProductFactory productFactory = new ProductFactory();

        // 创建 ProductA 对象

        Product productA = productFactory.createProduct("A");

        productA.create();

        // 创建 ProductB 对象

        Product productB = productFactory.createProduct("B");

        productB.create();

    }

}

// 定义产品接口
interface Product {

    void create();

}

// 实现类 ProductA
class ProductA implements Product {

    @Override

    public void create() {

        System.out.println("ProductA is created.");

    }

}

// 实现类 ProductB
class ProductB implements Product {

    @Override

    public void create() {

        System.out.println("ProductB is created.");

    }
}

class ProductFactory {

    // 工厂方法,根据参数类型创建具体的产品对象

    public Product createProduct(String type) {

        if (type.equalsIgnoreCase("A")) {

            return new ProductA();

        } else if (type.equalsIgnoreCase("B")) {

            return new ProductB();

        }

        // 可以返回 null 或者抛出异常

        return null;

    }

}

3.代理模式(Proxy Pattern): Spring AOP(面向切面编程)大量使用了代理模式。当你配置一个切面(Aspect)时,Spring会创建目标对象的代理来拦截方法调用,并在方法执行前后插入额外的行为。

/**
 * 上面的代码展示了如何通过代理模式实现对对象的访问控制(权限验证)
 */
public class Client {

    public static void main(String[] args) {
        Proxy proxy = new Proxy("User");
        proxy.request();  // 输出:抱歉,你没有权限!
        Proxy adminProxy = new Proxy("Admin");
        adminProxy.request();  // 输出:得到请求的权限!
    }
}

// Subject接口
interface Subject {
    void request();
}

// RealSubject类
 class RealSubject implements Subject {
    public void request() {
        System.out.println("得到请求的权限!");
    }
}

// Proxy类
class Proxy implements Subject {
    private RealSubject realSubject;
    private String userRole;
    public Proxy(String userRole) {
        this.userRole = userRole;
    }
    public void request() {
        // 进行权限检查
        if (this.userRole.equals("Admin")) {
            if (realSubject == null) {
                realSubject = new RealSubject();
            }
            realSubject.request();
        } else {
            System.out.println("抱歉,你没有权限!");
        }
    }
}

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求