代理模式:静态代理、动态代理与Spring AOP应用

代理模式:静态代理、动态代理与Spring AOP应用

设计模式是解决常见设计问题的成熟方案,Java后端工程师必须掌握。

一、设计模式分类

代理模式是AOP的基础,理解静态代理和动态代理的区别和实现原理对掌握Spring AOP至关重要

1.1 创建型模式

// 单例模式
public class Singleton {
    private static volatile Singleton instance;

    private Singleton() {}

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

// 工厂模式
public interface Shape {
    void draw();
}

public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Circle");
    }
}

public class ShapeFactory {
    public Shape getShape(String type) {
        if ("CIRCLE".equalsIgnoreCase(type)) {
            return new Circle();
        }
        return null;
    }
}

1.2 结构型模式

// 代理模式
public interface Image {
    void display();
}

public class RealImage implements Image {
    @Override
    public void display() {
        System.out.println("Displaying real image");
    }
}

public class ProxyImage implements Image {
    private RealImage realImage;

    @Override
    public void display() {
        if (realImage == null) {
            realImage = new RealImage();
        }
        realImage.display();
    }
}

1.3 行为型模式

// 观察者模式
public interface Observer {
    void update(String message);
}

public class User implements Observer {
    @Override
    public void update(String message) {
        System.out.println("Received: " + message);
    }
}

public class Subject {
    private List<Observer> observers = new ArrayList<>();

    public void attach(Observer observer) {
        observers.add(observer);
    }

    public void notify(String message) {
        for (Observer observer : observers) {
            observer.update(message);
        }
    }
}

二、常见面试题

Q1: 单例模式有哪些实现方式?

答案:
1. 饿汉式:类加载时初始化
2. 懒汉式:延迟加载,线程不安全
3. 双重检查锁:线程安全,延迟加载
4. 静态内部类:利用类加载机制
5. 枚举:最佳实践

Q2: 装饰器模式和代理模式的区别?

答案:
- 装饰器:增强功能
- 代理:控制访问

三、总结

设计模式是经验的结晶:

核心要点
- 理解模式的适用场景
- 掌握模式的实现方式
- 学会在实际项目中应用

学习建议
- 阅读经典书籍
- 分析开源框架设计
- 实践项目应用


posted @ 2026-02-24 18:00  寒人病酒  阅读(0)  评论(0)    收藏  举报