大话设计模式之代理模式(代码片段)

恋在那时 恋在那时     2022-10-30     259

关键词:

引言:让我们重温经典,致敬经典

代理模式:为其他对象提供一种代理以控制对这个对象的访问

UML:

 

解读:代理模式要求代理者和被代理者实现同一个接口或者继承自同一个父类。并且代理者要持有真实对象的引用。

所以代理者和被代理者之间的关系应该是关联关系。

代码:

 1 package com.dzf.designtest;
 2 
 3 /**
 4  * <desc>
 5  *     代理模式:为其他对象提供一种代理以控制对这个对象的访问
 6  *
 7  * </desc>
 8  * @author dingzf
 9  * @date 2018/4/1
10  * @time 17:56
11  */
12 public class ProxyDemo 
13     //客户端调用
14     public static void main(String[] args) 
15         Proxy proxy = new Proxy();
16         proxy.print();
17     
18 
19 abstract class Subject
20     public abstract void print();
21 
22 class RealSubject extends Subject
23     @Override
24     public void print() 
25         System.out.println("我是真实的对象1");
26     
27 
28 class Proxy extends Subject
29     private Subject subject;
30 
31     @Override
32     public void print() 
33         if(subject == null)
34             subject = new RealSubject();
35         
36         subject.print();//执行真实对象的方法或者行为
37     
38 

对于客户端来说,无需知道真实对象(RealSubject),只需要知道代理者即可。

要点:代理者和被代理者实现同一个接口,或者继承自同一个父类,代理者持有被代理者的引用。

体现:jdk的动态代理

我们知道jdk的动态代理只能代理接口不能代理类。代理类的要使用cglib动态代理,有兴趣的可以自己去找找相关的资料了解了解。这里就不再说这个,毕竟不是我们的重点。

大话设计模式--代理模式(代码片段)

代理模式:为其他对象提供一种代理以控制对这个对象的访问。Subject类定义了RealSubject和ProxySubject的公用接口,这样就在任何使用RealSubject的地方都可以使用ProxySubject。RealSubject类,定义Proxy所代表的真实实体。Proxy类&... 查看详情

大话设计模式之简单工厂模式(代码片段)

大话设计模式——简单工厂模式--参考自《大话设计模式》需求现在有一个需求,实现一个简单的计算器对于一般的初学者来说可能会这么实现:publicclasscalculatepublicstaticvoidmain(String[]args)Scannercin=newScanner(System.in);System.out.println(&qu... 查看详情

大话设计-代理模式(代码片段)

记录大话设计学习过程。代理模式:代理者为其他对象提供代理,以控制对真实对象的访问。用户调用代理者,代理者通过真实的对象引用让对象去做事情。但是代理者可以附加一些功能,然后才让真实对象去做事情。代理模式... 查看详情

大话设计模式——装饰模式和代理模式(代码片段)

1、是什么?装饰模式:动态地给一个对象添加额外的职责。 代理模式:其他对象通过对象A去访问对象B。 2、为什么用?装饰模式:1、遵循开闭原则,尽量不去修改原有的类。2、装饰对象一般都是添加额外的非核心功能... 查看详情

java之代理模式(大话设计模式)

...买可乐就是需要做的行为。这是笔者理解的代理模式大话设计模式-类图要想实现代理,那么代理类和被代理的类就都要实现一个共同的接口,就刚刚买可乐的例子,我和我的室友都可以买可乐。代理类可以动态的去做一些事情... 查看详情

大话设计模式之策略模式(代码片段)

背景:商场促销期间,可能会出现8折、5折的促销活动,也可能出现满100减10、满200减30的促销活动,设计一个收银系统。策略模式:定义了算法家族,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。... 查看详情

大话设计模式之简单工厂模式(代码片段)

背景需求:模拟一个简单计算器。UML类图:说明:抽象类AbstractOperation有一个抽象方法getResult和两个成员变量,加减乘除分别继承AbstractOperation并实现getResult方法即可。OperationFactory是一个简单工厂方法,可根据入参实例化不同的... 查看详情

大话设计模式之策略模式读后感(代码片段)

策略模式:定义了算法家族,分别封装起来,让他们呢之间可以互相的替换,此模式让算法的变化不会影响到使用算法的客户。UML类图:解读:策略模式是定义一系列的算法,从概念上来讲,这些算法完成的工作都是一样的,只... 查看详情

大话设计模式之工厂方法模式读后感(代码片段)

引言:让我们重温经典,致敬经典工厂方法模式:定义一个用于创建对象的接口,让子类来决定实例化哪一个类,工厂方法使一个类的实例化延迟到了子类。UML图:1packagecom.dzf.designtest;23/**4*<desc>5*工厂方法:定义一个创建对... 查看详情

大话设计模式之简单工厂读后感(代码片段)

引言:让我们重温经典,致敬经典简单工厂模式:根据调用端传参来有选择的实例化目标对象。UML类图:我们知道简单工厂就是为我们生成我们需要的对象。举个栗子:我们在舞台看表演的时候,一场场表演下来,我们可以总结... 查看详情

设计模式之—代理模式(代码片段)

1.代理模式定义Provideasurrogateorplaceholderforanotherobjecttocontrolaccesstoit.对其他对象提供一种代理,以控制对这个对象的访问2.代理模式通用类图代理模式的通用类图如下:其中Subject为抽象主题角色:Subject为普通业务接口RealSubject为具... 查看详情

设计模式之静态代理模式(代码片段)

 //设计模式之静态代理模式interfaceChefervoidBecomeChefer();//小明想当厨师,天天做好吃的classXiaoMingimplementsChefer@OverridepublicvoidBecomeChefer()System.out.println("我要学厨艺");//我是中介,钱出够了什么都妥了classProxyimplements 查看详情

23天设计模式之代理模式(代码片段)

23天设计模式之代理模式文章简介《23天设计模式之代理模式》是在最近学习反射与注解时,在反射中有关Proxy类的知识,也就顺带复习一下代理模式,总结博客。代理模式为其他对象提供一种代理以控制对这个对象的访问。在某... 查看详情

设计模式之代理模式(代码片段)

什么是代理模式?代理模式的定义为:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 类图结构... 查看详情

设计模式之代理模式(代码片段)

代理模式1.简要概述2.模式分类3.模式结构4.实现代码5.优点好处6.缺点弊端7.应用场景8.应用示例1.简要概述代理模式就是通过代理对象来控制对真实对象的访问,也就是详细的控制访问某个对象的方法,从而将一些统一的... 查看详情

设计模式之-代理模式(proxypattern)(代码片段)

...ProxyPattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 C++代码实现:#include<iostream>usingnamespacestd;//抽象类,抽象的... 查看详情

设计模式之代理模式(代码片段)

1.代理模式:为一个对象提供一个替身,以控制对这个对象的访问,既通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增加额外的功能操作,即扩展目标对象的功能。2.被代理的对象可以是远程对象,... 查看详情

设计模式之代理模式(代码片段)

使用聚合模式实现静态代理本质上,动态代理是在程序运行过程中创建生成一个类并且将它加载到JVM中,通过上面的实现步骤,他是把额外的代码(spring中叫切面)植入到被代理类(方法)中以后合成一个类。与静态代理的实现... 查看详情