设计模式——代理模式

代理模式是一种常见的设计模式,用于控制对对象的访问。在 Java 中,代理模式通常涉及创建一个代理类,该类充当了另一个对象的接口,以控制对该对象的访问。

代理模式基本介绍

【1】代理模式:为一个对象提供一个替身,以控制对目标对象的访问。即通过代理对象访问目标对对象对现的基础外的标对象的功能。
【2】被代理的对象可以是远程对象,创建开销大的对象或需要安全控制的对象。
【3】代理模式有不同的形式,主要有三种:静态代理、动态代理(又称JDK代理、接口代在内存动态的创建对象,目标要对现口,它也尾代动态代理,它口代代代,主可,主可代代,主可代代代,主可,对口代代代,的标

度。
【5】代理模式的主要缺点:  在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢。  ②、增加了系统的复杂度。

主要涉及到以下几个核心角色:

  • 抽象主题(Subject):

    • 定义了真实主题和代理主题的共同接口,这样在任何使用真实主题的地方都可以使用代理主题。
  • 真实主题(Real Subject):

    • 实现了抽象主题接口,是代理对象所代表的真实对象。客户端直接访问真实主题,但在某些情况下,可以通过代理主题来间接访问。
  • 代理(Proxy):

    • 实现了抽象主题接口,并持有对真实主题的引用。代理主题通常在真实主题的基础上提供一些额外的功能,例如延迟加载、权限控制、日志记录等。
  • 客户端(Client):

    • 使用抽象主题接口来操作真实主题或代理主题,不需要知道具体是哪一个实现类。

Java代理模式案例,模拟购买房屋的情景

假设有一个买房的场景,有三个角色:买家(Buyer)、房产中介(RealEstateAgent)、房东(HouseOwner)。、

首先,我们有一个房产接口 House

然后,我们有一个房东类 HouseOwner 实现了房产接口,代表房屋的实际所有者:

接着,我们创建一个房产中介类 RealEstateAgent,充当买家和房东之间的代理,并实现了房产接口

最后,我们有一个买家类 Buyer,代表购房者,他们通过房产中介购买房屋:

// 房产接口
interface House {
    void sell();
}

// 房东类,实现了房产接口
class HouseOwner implements House {
    private String address;

    public HouseOwner(String address) {
        this.address = address;
    }

    @Override
    public void sell() {
        System.out.println("房东出售房屋:" + address);
    }
}

// 房产中介类,实现了房产接口
class RealEstateAgent implements House {
    private HouseOwner houseOwner;

    public RealEstateAgent(HouseOwner houseOwner) {
        this.houseOwner = houseOwner;
    }

    @Override
    public void sell() {
        beforeSell();
        houseOwner.sell();
        afterSell();
    }

    private void beforeSell() {
        System.out.println("房产中介协助处理文件工作和谈判");
    }

    private void afterSell() {
        System.out.println("房产中介办理所有权转移手续");
    }
}

// 买家类
public class HouseBuyingExample {
    public static void main(String[] args) {
        // 创建房东和房产中介对象
        HouseOwner houseOwner = new HouseOwner("123 Main St.");
        RealEstateAgent agent = new RealEstateAgent(houseOwner);

        // 买家通过房产中介购买房屋
        agent.sell();
    }
}

这个示例中,房产中介类 RealEstateAgent 充当了买家和房东之间的代理,处理了房屋购买过程中的一些中间步骤,例如文件工作和所有权转移,而买家类 Buyer 则通过房产中介购买房屋。

 

运行截图

设计模式——代理模式_第1张图片

你可能感兴趣的:(java设计模式,设计模式,代理模式)