设计模式之代理模式的学习思考

本文详细介绍了代理模式的概念及其在软件设计中的应用。通过一个具体的例子——图片加载,展示了代理模式如何帮助提升程序性能,并讨论了其优缺点及与其他设计模式的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总觉得设计模式名字起的很好,形象地就代表它的功能。

正如代理模式,它是使用一个类代表另一个类的功能,属于结构型设计模式。

通过创建对象的对象,来提供访问功能的接口。

应用举例:快捷方式、代售点等。

设计:

  • 一个接口,两个分别实现类,一个是功能类,一个是代理类,代理类里有功能类对象的数据成员

代码:

interface Image{
    void display();
}

class RealImage implements Image{
    private String fileName;

    private void loadFromDisk(String fileName){
        System.out.println("Loading"+fileName);
    }

    public RealImage(String fileName){
        this.fileName=fileName;
        loadFromDisk(fileName);
    }
    public void display() {
        System.out.println("Displaying:"+fileName);

    }

}

class ProxyImage implements Image{
     private RealImage realImage;
     private String fileName;

    public ProxyImage(String fileName) {

        this.fileName = fileName;
    }

    public void display() {
        if(realImage==null){
            realImage=new RealImage(fileName);
        }
        realImage.display();
    }
}
public class ProxyPatternDemo {
    public static void main(String[] args) {
        Image image=new ProxyImage("dog.jpg");
        image.display();
        System.out.println("");
        //因为realImage已经被初始化了
        image.display();
    }
}

输出:

Loadingdog.jpg
Displaying:dog.jpg

Displaying:dog.jpg

总结:

  1. 优点:职责清晰、高拓展性
  2. 缺点:代理模式可能会复杂化
  3. 和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。
  4. 和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值