代理模式在实现过程中,要创建一个接口(社交技巧-接口),代理类(经纪人 - 类)和真实类(范冰冰 - 类)同时实现这个接口。

举个例子:

我们想要找范冰冰吃饭,但是呢,她是大明星,不可能轻易见我们,我们需要先找范冰冰的经纪人。我们跟经纪人说:“我要找范冰冰吃饭”,如果经纪人同意,我们就可以和范冰冰吃饭,不同意的话我们就不能和范冰冰吃饭。

package cn.tedu.staticproxy;
/**
* 社交技巧 - 接口
*/
public interface SJSkill {
public void 吃();
public void 唱歌();
}
package cn.tedu.staticproxy;
/**
* 经纪人 - 类
*/
public class JJRStaticProxy implements SJSkill{ private FBB fbb = new FBB(); @Override
public void 吃() {
System.out.println("权限认证:你谁啊????");
fbb.吃();
System.out.println("记录日志:等我,我记一下来访记录");
} @Override
public void 唱歌() {
System.out.println("权限认证:你谁啊????");
fbb.唱歌();
System.out.println("记录日志:等我,我记一下来访记录");
} }
package cn.tedu.staticproxy;
/**
* 范冰冰 - 类
*/
public class FBB implements SJSkill{
public void 吃(){
System.out.println("fbb吃饭。。。");
}
public void 唱歌(){
System.out.println("fbb唱歌。。。");
}
}
package cn.tedu.staticproxy;

import org.junit.Test;
/**
* 测试 - 类
*/
public class StaticProxyTest {
@Test
public void test01(){
JJRStaticProxy jjr = new JJRStaticProxy();
jjr.吃();
jjr.唱歌();
}
}

SpringAOP基础 - 静态代理设计模式的更多相关文章

  1. 静态代理设计模式(StaticProxy)

    静态代理设计模式: 要求:真实角色,代理角色:真实角色和代理角色要实现同一个接口,代理角色要持有真实角色的引用. 在Java中线程的设计就使用了静态代理设计模式,其中自定义线程类实现Runable接口 ...

  2. 代理设计模式 (静态代理设计模式)+ 动态代理(JDK和Cglib)

    一.代理设计模式 1.设计模式:前人总结一套解决特定问题的代码 2.代理设计模式优点: 2.1 保护真实对象 2.2 让真实对象职责更明确 2.3 扩展 3.代理设计模式 3.1 真实对象(老总) 3 ...

  3. SpringAOP之静态代理

    一.SpringAOP: ⒈AOP:Aspect Oriented Programming 面向切面编程, 实现的是核心业务和非核心业务之间的的分离,让核心类只做核心业务,代理类只做非核心业务.  ⒉ ...

  4. Java基础-静态代理与动态代理比较

    JAVA的静态代理与动态代理比较 静态代理类: 由程序员创建或由特定工具自动生成源代码,再对其编译.在程序运行前,代理类的.class文件就已经存在了.动态代理类: 在程序运行时,运用反射机制动态创建 ...

  5. Spring知识点总结(四)之SpringAOP基础 - 代理设计模式

        1. 分析程序中存在的问题(高内聚,低耦合)        通过springIOC DI) 以及注解的使用,成功解决了在程序中层与层之间出现的耦合的问题,但是在很多地方仍然存在非该层应该实现的 ...

  6. Java - 静态代理详讲

    Java - 静态代理详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 写在前面:*此章内容比较抽象,所以需要结合实际操作进行讲解*                   *需要有 ...

  7. Spring -07 -AOP [面向切面编程] - 使用注解@+ AspectJ 方式实现环绕/前/后等通知 -超简洁 --静态代理/动态代理{JDK/cglib}

    1.spring 不会自动去寻找注解,必须告诉 spring 哪些包下的类中可能有注解;使用注解来取代配置文件.1.1 引入xmlns:context ,指定扫描范围 <context:comp ...

  8. Java多线程之静态代理

    package org.study2.javabase.ThreadsDemo.staticproxy; /** * @Date:2018-09-18 静态代理 设计模式 * 1.真实角色 * 2.代 ...

  9. java之 代理设计模式

    1. 设计一个案例来实现租房功能.分析:在租房的过程中涉及到了3个对象,房东,中介,房客. 中介和房客具有相同的功能--租房. 可以设计如下: 2.上图的设计实际上就是一个代理设计模式---静态代理设 ...

随机推荐

  1. Quartz表结构说明

    一.表信息解析: 1.1. qrtz_blob_triggers : 以Blob 类型存储的触发器. 1.2. qrtz_calendars:存放日历信息, quartz可配置一个日历来指定一个时间范 ...

  2. 驱动程序多线程 PsCreateSystemThread

    内核函数PsCreateSystemThread负责创建新线程.该函数可以创建两种线程,一种是用户线程,它属于当前进程中的线程.另一种是系统线程,系统线程不属于当前用户进程,而是属于系统进程,一般PI ...

  3. mysql的字符拼接

    在Mysql 数据库中存在两种字符串连接操作.具体操作如下 一. 语法: 1. CONCAT(string1,string2,…)   说明 : string1,string2代表字符串,concat ...

  4. settype和gettype

    settype — 设置变量的类型 <?php$foo = "5bar"; // string$bar = true;   // boolean settype($foo,  ...

  5. Redis在.net中的应用学习

    在Redis的官网(http://redis.io/clients#c)上可以看到支持Redis C#的客户端. redis的网络连接方式和传统的rdbms相似,一种是长连接,一种是连接池,此处使用长 ...

  6. HDU 2853 && HDU 3315

    http://acm.hdu.edu.cn/showproblem.php?pid=2853 题意:给一个n-m二分图,边权用一个n*m的矩阵表示,给出初始匹配,求二分图完美匹配相比初始匹配改变了几条 ...

  7. 学习magento要学哪些知识

    php框架水平,具体点的就是大名鼎鼎的ZF框架.别急,先还是熟悉下OSC吧,主要是热身下商城的那些业务流的知识,基本的数据流程.自己做模板的话CSS2.0水平还不能太低.JS框架JQ吧相对简单点.当然 ...

  8. MyEclipse多次重装、删除注册表、重装系统激活都不成功,终极解决方法 - imsoft.cnblogs

      问题:注册成功的MyEclipse被修改了一个配置文件之后,激活失败,然后在网上找激活码,激活不成功,但激活文件一直保存在电脑中,每次打开MyEclipse的激活界面总看得到之前的激活码.后面尝试 ...

  9. 20155316 2016-2017-2 《Java程序设计》第5周学习总结

    教材学习内容总结 这周总结 try catch语法 异常继承结构 throw finally AutoCloseable接口 Collection Map Lambda表达式 上周总结 三个关键 类与 ...

  10. POJ 3617:Best Cow Line(贪心,字典序)

    Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30684   Accepted: 8185 De ...