java 多线--静态代理模式
我们使用 java 多线程时,都需要通过线程代理对象来启动线程,常见的写法:
new Thread(target).start();
这在设计模式中叫静态代理模式,静态代理模式组成;
1、公共接口
2、真实角色
3、代理角色
以结婚为例,结婚要找婚庆公司,结婚前和结婚后的事情交给婚庆公司处理,你只要结婚就行。
公共接口:
// 公共接口
interface Marry {
	void happyMarry();
}
真实角色:
// 真实角色
class You implements Marry{
	@Override
	public void happyMarry() {
		System.out.println("you and 嫦娥终于奔月了。。。");
	}
}
代理角色:
// 代理角色
class Wedding implements Marry{
	private Marry target;
	public Wedding(Marry target) {
		this.target = target;
	}
	@Override
	public void happyMarry() {
		befor();
		target.happyMarry();
		after();
	}
	private void after() {
		System.out.println("闹玉兔。。。");
	}
	private void befor() {
		System.out.println("布置猪窝。。。");
	}
}
运行测试:
public class StaticProxy {
	public static void main(String[] args) {
		new Wedding(new You()).happyMarry();
	}
}
运行结果:

java 多线--静态代理模式的更多相关文章
- 黑马程序员:Java基础总结----静态代理模式&动态代理
		黑马程序员:Java基础总结 静态代理模式&动态代理 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public class Ts { ... 
- Java面向对象_静态代理模式
		概念:为其它对象提供一种代理以控制对这个对象的访问.代理模式说白了就是"真实对象"的代表,在访问对象时引入一定程度的间接性,因为这种间接性可以附加多种用途. public clas ... 
- 2.1多线程(java学习笔记) java中多线程的实现(附静态代理模式)
		一.多线程 首先我们要清楚程序.进程.线程的关系. 首先进程从属于程序,线程从属于进程. 程序指计算机执行操作或任务的指令集合,是一个静态的概念. 但我们实际运行程序时,并发程序因为相互制约,具有“执 ... 
- java的线程、创建线程的 3 种方式、静态代理模式、Lambda表达式简化线程
		0.介绍 线程:多个任务同时进行,看似多任务同时进行,但实际上一个时间点上我们大脑还是只在做一件事情.程序也是如此,除非多核cpu,不然一个cpu里,在一个时间点里还是只在做一件事,不过速度很快的切换 ... 
- Java模式—静态代理模式
		静态代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问,提供“真实对象”的代表,在访问对象时引入一定程度的间接性,这种间接性可以附加多种用途. 代理模式的主要作用是为其他对象 ... 
- JAVA笔记7__接口应用/Object类/简单工厂模式/静态代理模式/适配器模式
		/** * 接口应用 */ public class Main { public static void main(String[] args) { Person p = new Person(&qu ... 
- Java设计模式9:代理模式
		代理模式 代理模式的定义很简单:给某一对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式的结构 有些情况下,一个客户不想活着不能够直接引用一个对象,可以通过代理对象在客户端和目标对象之间 ... 
- Java的三种代理模式
		Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ... 
- Java的三种代理模式简述
		本文着重讲述三种代理模式在java代码中如何写出,为保证文章的针对性,暂且不讨论底层实现原理,具体的原理将在下一篇博文中讲述. 代理模式是什么 代理模式是一种设计模式,简单说即是在不改变源码的情况下, ... 
随机推荐
- Python第十一章-常用的核心模块04-datetime模块
			python 自称 "Batteries included"(自带电池, 自备干粮?), 就是因为他提供了很多内置的模块, 使用这些模块无需安装和配置即可使用. 本章主要介绍 py ... 
- 深入理解Java AIO(三)—— Linux中的AIO实现
			我们调用的Java AIO底层也是要调用OS的AIO实现,而OS主要也就Windows和Linux这两大类,当然还有Solaris和mac这些小众的. 在 Windows 操作系统中,提供了一个叫做 ... 
- CentOS7通过wget下载文件到指定目录
			查看自己的CentOS7系统有没有安装wget: [duanyongchun@192 3DUnetCNN]$ rpm -qa|grep wget 已安装提示: #已安装提示:wget-1.14-18. ... 
- [vijos1844]遭遇战<SPFA>
			题目链接:https://vijos.org/p/1404 我在二分查找区找到这道题的,没错这就是一道摆在二分区但是可以用SPFA做的一道题(当然我后来去看了下分区,貌似这题的方法很多) 这一题还是比 ... 
- 商品spu 和  sku的关系
			总结一下在目前的电商系统中的商品涉及的属性spu,sku.搞清楚两者之间的关系对表的设计非常重要 spu Standard Product Unit (标准产品单位) ,一组具有共同属性的商品集 SK ... 
- 一文摸透从输入URL到页面渲染的过程
			一文摸透从输入URL到页面渲染的过程 从输入URL到页面渲染需要Chrome浏览器的多个进程配合,所以我们先来谈谈现阶段Chrome浏览器的多进程架构. 一.Chrome架构 目前Chrome采用的是 ... 
- Python常用模块之json
			本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. SO ... 
- O - 推箱子 HDU - 1254(bfs_box + bfs_man)
			O - 推箱子 HDU - 1254 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能 ... 
- 《Python Enhancement Proposal #8》要点 学习摘录
			<Python Enhancement Proposal #8> (8号python增强提案)又叫PEP8,他针对的python代码格式而编订的风格指南. 空白 使用space来表示缩进, ... 
- ScrollViewer - 可用鼠标拖动滚动的列表框
			ScrollViewer添加附加属性: using System; using System.Collections.Generic; using System.Windows; using Syst ... 
