28 多线程(二)——静态代理设计模式

引入

在前一节我们学习了实现Runnable接口创建线程,其中提到只使用一次对象时使用匿名对象,如:

new Thread(new xxx().start();//xxx为实现了Runnable的类

  

Thread就是一个静态代理,使用了这种方法,xxx类无需继承Thread类,就可以通过Thread类创建一个线程。

Thread就和装饰类的作用相似,都是包装一个对象。

那么,静态代理设计模式的特点就是:

  • 代理者与被代理者都继承同一个接口(Thread与xxx继承的是Runnable接口)
  • 代理者类中有一个被代理者的示例
  • 代理者做绝大多数活

示例

接下来,我们做一个婚庆公司的静态代理。婚庆公司只需要传入一对新人,就可以为它们操办一切婚事。

婚庆公司就是代理者,新人就是被代理人,它们实现同一个接口:结婚。

原文地址:https://www.cnblogs.com/Scorpicat/p/11976955.html

时间: 2024-08-27 15:10:02

28 多线程(二)——静态代理设计模式的相关文章

静态代理设计模式(StaticProxy)

静态代理设计模式: 要求:真实角色,代理角色:真实角色和代理角色要实现同一个接口,代理角色要持有真实角色的引用. 在Java中线程的设计就使用了静态代理设计模式,其中自定义线程类实现Runable接口,Thread类也实现了Runalbe接口,在创建子线程的时候,传入了自定义线程类的引用,再通过调用start()方法,调用自定义线程对象的run()方法.实现了线程的并发执行. 1 public class Test2 { 2 3 public static void main(String[]

装饰者设计模式与静态代理设计模式的对比

相同点: (1) 装饰者类与代理类都需要实现目标类所实现的接口 (2) 装饰者类与代理类中都需要声明目标类对象,目的是这些类中都需要调用目标对象的目标方法 (3) 装饰者类与代理类都可以在不改变目标类的前提下对目标对象进行增强 不同点: (1) 目的不同:装饰者类的目的就是为了增强目标类:静态代理类的目的是为了保护和隐藏目标对象. (2) 装饰者类与代理类中都需要声明目标类对象,但对于目标对象的创建方式不同.装饰者类是由带参构造器传入的:代理类中的目标对象,是在无参构造器中直接创建的. (3) 

静态代理设计模式

代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象. 为什么需要代理: 打一个最简单的比方,我现在想要学习,那么就必须得把书包拿过来,把书掏出来,准备好纸笔,然后开始学习,等学完了我还得收拾书,把书塞回书包里,还得整理一下书包,这是一个完整的学习的过程,但是我很懒,不想动弹,只想学习,那可能就得让妈妈帮我把书包拿过来,把书打开,我只管学习就好了,学完以后,妈妈再帮我把书整理好放回去.(我这是打个什么破比方...),在这里,妈妈就代表了一个代理对象,要学习的人是我,

【黑马】程序员————多线程(二)单例设计模式、线程间通信,JDK1.5互斥锁

------Java培训.Android培训.iOS培训..Net培训.期待与您交流!----- 一.单例设计模式 单例设计模式的意义: A.保证类在内存中只有一个对象,不提供外部访问方式,构造函数用private修饰. B.提供公共方法(static修饰,类的静态方法),获取类的实例.单例设计模式分为饿汉和懒汉两种模式. 饿汉式&懒汉式 class Test33 { public static void main(String[] args) { Fanjianan.getInstance()

多线程与静态代理

package thread; //方便共享资源 public class 多线程与代理 { public static void main(String[] args) { //真实角色 Web12306 web=new Web12306(); //代理 Thread t1=new Thread(web,"xiaoming"); Thread t2=new Thread(web,"hong"); Thread t3=new Thread(web,"hua

java多线程(二)——用到的设计模式

接上篇:java多线程(一)http://www.cnblogs.com/ChaosJu/p/4528895.html java实现多线程的方式二,实现Runable接口用到设计模式——静态代理模式 一.代理模式 代理模式的定义 代理模式(Proxy Pattern)是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,并由代理对象控制对原对象的引用. 代理模式不会改变原来的接口和行为,只是转由代理干某件事,代理可以控制原来的目标,例如:代理商,代理商只会卖东西,但并不会改变行为,不会制造

设计模式之静态代理

一 什么是代理 代理(Proxy) 它是一种设计模式,提供了对目标对象另外的访问,即通过代理对象访问目标对象.这样做的好处就是可以在不改变目标对象实现前题下,增加额外的功能,即对目标对象的功能做扩展. 举个例子:我们需要在一个方法的执行前和执行后添加日志记录功能,在不使用代理时,我们的方法调用如下 此时,我们就需要修改当前的实现方法,不符合我们添加业务方法时不破换原有方法(目标对象)的设计思想.使用代理后,我们的方法调用如下 这个时候,我们调用的时代理对象,这时我们就只需要在在代理类中添加我们的

【设计模式学习笔记】 之 静态代理

简介:静态代理设计模式可以理解为实际操作对象的代理,这个代理拥有实际对象的所有接口,代理对象中持有着实际对象的引用,但是这个代理对象在客户端调用接口的时候,将这些请求进行拦截,对请求数据进行预处理(相当于Filter),可以在预处理中做判断如果满足条件放行实际对象操作,否则代理对象处理并返回. 有几点需要注意: 访问代理对象的客户端并不知道这是一个代理对象,他只关心效果 代理对象可以对调用传参进行处理 特定的情况下代理对象可以代实际对象执行操作 初学亿图画个图,看样子还行,大家凑合看看:) 由于

设计模式之静态代理模式

举个栗子: 比如你结婚,婚庆公司帮你代理一些事情(布置婚房,准备午餐等),虽然婚前公司做的,但是是为你而做的 静态代理的设计模式的三要素: 1.真实角色 2.代理角色:代理角色需要具有真实角色的引用,这样才能实现对真实角色的代理 3.真实角色和代理角色要实现共同的接口 看个样例: Staticproxy.java package 设计模式; /** * @author:yb * @version 创建时间:2018-12-24 下午4:48:03 类说明 */ /* * 静态代理 设计模式 *