静态代理设计模式:

      要求:真实角色,代理角色;真实角色和代理角色要实现同一个接口,代理角色要持有真实角色的引用。

  在Java中线程的设计就使用了静态代理设计模式,其中自定义线程类实现Runable接口,Thread类也实现了Runalbe接口,在创建子线程的时候,传入了自定义线程类的引用,再通过调用start()方法,调用自定义线程对象的run()方法。实现了线程的并发执行。

 public class Test2 {

     public static void main(String[] args) {
//Runnable实现类对象,真实角色
Thread1 role1 = new Thread1();
//线程类代理角色,该类也实现了Runnable接口,代理角色
Thread thread1 = new Thread(role1);//传入了真实角色的引用 thread1.start(); }
} class Thread1 implements Runnable { @Override
public void run() {
//TODO
} }

  Thread对象调用线程的start()方法,在内部调用了真实角色的run()方法。

设计静态代理模式

  第一步,要有一个共同使用的接口

 // 共同的接口
public interface Proxy {
public abstract void todo();
}

  代理角色和真实角色共同实现该接口,代理角色实现需要的功能。

 // 真实角色
class RealityRole implements Proxy { @Override
public void todo() {
System.out.println("真实角色的功能");
}
} // 代理角色
class ProxyRole implements Proxy {
// 持有代理角色的引用
private Proxy realityRole; public ProxyRole() { } //传入一个真实角色
public ProxyRole(Proxy role) {
realityRole = role;
}
@Override
public void todo() {
//在真实角色功能运行之前,代理角色做准备工作
doBefore();
//执行真实角色的功能
realityRole.todo();
//代理角色的收尾工作
doAfter();
}
private void doBefore() {
System.out.println("准备工作");
}
private void doAfter() {
System.out.println("收尾工作");
}
}

  创建真实角色的对象和代理角色的对象,并将真实角色对象的引用传给代理角色,让代理角色去执行功能。

 public class Test {
public static void main(String[] args) {
//创建真实角色对象
Proxy realityRole = new RealityRole();
//创建代理角色对象,并制定真实对象
ProxyRole proxyRole = new ProxyRole(realityRole);
//代理角色工作,本质调用的还是真实角色的功能
proxyRole.todo();
}
}
运行结果:
  准备工作
  真实角色的功能
  收尾工作

  

静态代理设计模式(StaticProxy)的更多相关文章

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

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

  2. SpringAOP基础 - 静态代理设计模式

    代理模式在实现过程中,要创建一个接口(社交技巧-接口),代理类(经纪人 - 类)和真实类(范冰冰 - 类)同时实现这个接口. 举个例子: 我们想要找范冰冰吃饭,但是呢,她是大明星,不可能轻易见我们,我 ...

  3. Java多线程之静态代理

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

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

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

  5. Java动态代理和静态代理区别

    静态代理 package staticproxy; /** * 接口 * @author newtouch * */ public interface IHello { public void say ...

  6. java之 代理设计模式

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

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

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

  8. 用过滤器和装饰者设计模式(静态代理)解决getParameter乱码问题

    post的乱码问题比较好解决,这里主要是对get请求的乱码做处理 解决思路:增强request对象的getParameter方法,使之 getParameter  直接获取到的就是解决乱码后的数据 有 ...

  9. JAVA设计模式——代理(静态代理)

    定义 为其它的对象提供一种代理,以控制这个对象的访问 使用场景 当不想直接访问某个对象的时候,就可以通过代理 1.不想买午餐,同事帮忙带 2.买车不用去厂里,去4s店 3.去代理点买火车票,不用去车站 ...

随机推荐

  1. 【Kafka】

    KafkaProducer Kafka消息发布客户端. 线程安全,跨线程共享单个生产者实例通常比拥有多个实例的速度更快. 例子,使用生产者发送包含序列号的字符串作为键/值对的记录: Propertie ...

  2. maven编译时错误:无效的目标发行版

    (转)Maven 将依赖打进一个jar包 博客分类: maven   maven配置 <?xml version="1.0" encoding="UTF-8&quo ...

  3. canvas,html2canvas等合成图片不清晰问题

    function  pxRa(cxt) { var backingStore = context.backingStorePixelRatio || context.webkitBackingStor ...

  4. UI自动化测试(四)AutoIT工具使用和robot对象模拟键盘按键操作

    AutoIT简介 AutoIt 目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/ ...

  5. margin:0px auto和text-align:center区别

    (1)margin:0px auto :作用于块级元素,对块级元素进行居中 (2)text-align:center:作用于内联元素,必须放在要居中的内联元素所在的块级元素. 例: (1) <d ...

  6. kazoo python zookeeper 选主

    本文讲述基于zookeeper选主与故障切换的方法.我们的例子使用的是python. 使用的库是kazoo,安装方式 pip install kazoo  应用场景: 多个实例部署,但不是" ...

  7. Opencv处理鼠标事件-OpenCV步步精深

    在图片上双击过的位置绘制一个 圆圈 鼠标事件就是和鼠标有关的,比如左键按下,左键松开,右键按下,右键松开,双击右键等等. 我们可以通过鼠标事件获得与鼠标对应的图片上的坐标.我们通过以下函数来调用查看所 ...

  8. Spring MVC Ajax 嵌套表单数据的提交

    概述 在一些场景里,某个大表单里常常嵌套着一个或若干个小逻辑块,比如以下表单里"设计预审"中包括了一个子模块表单"拟定款项". 在这种情况下该怎么去设计实体类以 ...

  9. day38(增强类的实现)

    定义一个接口 package com.baidu.test; public interface Person { public abstract void eat(); public abstract ...

  10. C#设计模式之九装饰模式(Decorator)【结构型】

    一.引言 今天我们要讲[结构型]设计模式的第三个模式,该模式是[装饰模式].我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理解吧,大家一定要看清楚,是“装修”,不是“装饰”. ...