北风设计模式课程---14、代理模式

北风设计模式课程---14、代理模式

一、总结

一句话总结:

不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例
设计模式都是对生活的抽象,比如用户获得装备,我可以先装备工厂先生产出来装备,然后给宗门武器库,宗门武器库发给我,如果是打怪获得的装备,可以是装备工厂把装备给的怪物装备库

1、代理模式用的比较多的实例是什么?

拦截器:各种框架里面的拦截器

2、什么是代理模式?

客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理
   Proxy模式又叫做代理模式,是构造型的设计
模式之一,它可以为其他对象提供一种代理(Proxy)以
控制对这个对象的访问。
    所谓代理,是指具有与代理元(被代理的对象)具有
相同的接口的类,客户端必须通过代理与被代理的目标
类交互,而代理一般在交互的过程中(交互前后),进
行某些特别的处理。

3、代理模式的角色 实例?

抽象类:接口类,有卖书接口
真实类:具体类,有卖书方法
代理类:比如卖书的书店,还可以有打折,赠送代金券等方法

4、代理模式的角色和职责?

subject(抽象主题角色):真实主题与代理主题的共同接口。
RealSubject(真实主题角色):定义了代理角色所代表的真实对象。
Proxy(代理主题角色):含有对真实主题角色的引用,代理角色通常在将客户端调用传递给真是主题对象之前或者之后执行某些操作,而不是单纯返回真实的对象。

5、java中动态代理如何实现?

1. InvocationHandler 接口
2. invoke方法
3. Proxy.newProxyInstance();

6、代理模式 的演示代码中的角色实例?

1、subject(抽象主题角色):Subject.java
2、RealSubject(真实主题角色):RealSubject.java
3、Proxy(代理主题角色):ProxySubject.java
4、客户端:MainClass.java
扫描二维码关注公众号,回复: 6625157 查看本文章

二、内容在总结中

1、相关知识

subject(抽象主题角色):Subject.java
RealSubject(真实主题角色):RealSubject.java
Proxy(代理主题角色):ProxySubject.java
客户端:MainClass.java

 

2、代码

subject(抽象主题角色):Subject.java

public interface Subject {
    public  void sailBook();
}


RealSubject(真实主题角色):RealSubject.java

public class RealSubject implements Subject {

    public void sailBook() {
        System.out.println("卖书");
    }

}


Proxy(代理主题角色):ProxySubject.java

public class ProxySubject implements Subject{
    private RealSubject realSubject;

    public void sailBook() {
        dazhe();
        if(realSubject == null) {
            realSubject = new RealSubject();
        }
        realSubject.sailBook();
        give();
    }
    
    public void dazhe() {
        System.out.println("打折");
    }
    
    public void give() {
        System.out.println("赠送代金券");
    }
}


客户端:MainClass.java

public class MainClass {
    public static void main(String[] args) {
        ProxySubject proxySubject = new ProxySubject();
        proxySubject.sailBook();
    }
}
 

转载于:https://www.cnblogs.com/Renyi-Fan/p/11030868.html

猜你喜欢

转载自blog.csdn.net/weixin_33691700/article/details/93572307