Static Proxy
0.静态代理
静态代理的实现比较简单,代理类通过实现与目标对象相同的接口,并在类中维护代理对象。通过构造器塞入目标对象,赋值给代理对象,进而执行代理对象实现的接口方法,并实现前拦截,后拦截等所需的业务功能。
1.应用场景:
某对情侣要结婚了,但忙于毕业设计,只能将结婚相关准备和后续事宜交予结婚筹划公司。
2.代码
1 /**
2 * 静态代理模式:
3 * 真实对象和代理对象都要实现同一个接口
4 * 代理对象要代理真实角色,间接调用真实对象的方法。
5 *好处:代理对象可以做很多真实对象做不了的事情
6 * 真实对象专注做自己的实情
7 */
8 public class StaticProxy {
9 public static void main(String[] args) {
10 You wife = new You("Zxr",false);
11 You husband = new You("Zzf",true);
12 WeddingCompany jackWedCompy = new WeddingCompany(husband,wife);
13 jackWedCompy.HappyMerry();
14 }
15 }
16 //共同接口
17 interface Merry{
18 void HappyMerry();
19 }
20 //真实对象
21 class You implements Merry{
22 String name;
23 boolean isMale;
24 public You(String name,boolean isMale){
25 this.name = name;
26 this.isMale = isMale;
27 }
28 @Override
29 public void HappyMerry() {
30 System.out.println(this.name+"要结婚了,很开心。");
31 }
32 }
33 //代理对象
34 class WeddingCompany implements Merry{
35 You wife;
36 You husband;
37 public WeddingCompany(You husband,You wife){
38 this.husband = husband;
39 this.wife = wife;
40 }
41 @Override
42 public void HappyMerry() {
43 beforeMerry();
44 this.wife.HappyMerry();//间接调用真实对象的方法
45 this.husband.HappyMerry();
46 System.out.println("恭喜"+this.husband.name + "先生和" + this.wife.name + "女士结婚。");
47 afterMerry();
48 }
49 private void beforeMerry(){
50 System.out.println("公司安排拍摄" + this.husband.name + "先生和" + this.wife.name + "女士的结婚照。");
51 }
52 private void afterMerry(){
53 System.out.println("公司向" + this.husband.name + "先生和" + this.wife.name + "女士收取费用共*,***,***¥。");
54 }
55 }
Static Proxy的更多相关文章
- 设计模式讲解2:static proxy和decorator的不同点
声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 在常见的23种设计模式中,static proxy和decorator在代码结构上是特别相似的.那它们的不 ...
- Static Proxy (静态代理模式)
1.定义一个接口 ProxyInterface.java package com.staticproxy ; public interface ProxyInterface //就假设为 定义一个购 ...
- 设计模式-代理模式(Proxy Model)
文 / vincentzh 原文连接:http://www.cnblogs.com/vincentzh/p/5988145.html 目录 1.写在前面 2.概述 3.目的 4.结构组成 5.实现 5 ...
- Proxy 代理模式
简介 代理模式是用一个简单的对象来代替一个复杂的或者创建耗时的对象. java.lang.reflect.Proxy RMI 代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对 ...
- Dynamic proxy
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflec ...
- Proxy 动态代理 InvocationHandler CGLIB MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Proxy 代理模式 动态代理 cglib MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Dynamic proxy (good-原创)
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflec ...
- 百度地图api2.0体验
前言:这两天在做百度地图的功能,查看了百度官网的api完成了基本功能 api地址http://developer.baidu.com/map/jshome.htm 注意是javascript API ...
随机推荐
- WIN7使用msg命令发送消息心得
昨天搞了一下午+一晚上,终于捣鼓出了一些奇奇怪怪的操作,成功发送了消息. 应实验要求,博主有幸在家里搞到了两台win7,其他的系统是不是这么操作就不太清楚了. 一开始实验指导书上是用net send发 ...
- 【uva 1153】Keep the Customer Satisfied(算法效率--贪心+优先队列)
题意:有N个工作,已知每个工作需要的时间和截止时间.要求所有工作穿行完成,第一项任务开始的时间不早于时刻0.问最多能完成多少个工作.(N≤800000) 解法:贪心.可以模型化题目为:已知N个任务的长 ...
- hdu 3549Flow Problem
Problem Description Network flow is a well-known difficult problem for ACMers. Given a graph, your t ...
- VJ train1 I-彼岸
一道递推题(我这个菜鸡刚开始以为是排列组合) 题目: 突破蝙蝠的包围,yifenfei来到一处悬崖面前,悬崖彼岸就是前进的方向,好在现在的yifenfei已经学过御剑术,可御剑轻松飞过悬崖.现在的问题 ...
- hdu1828 Picture(线段树+扫描线+矩形周长)
看这篇博客前可以看一下扫描线求面积:线段树扫描线(一.Atlantis HDU - 1542(覆盖面积) 二.覆盖的面积 HDU - 1255(重叠两次的面积)) 解法一·:两次扫描线 如图我们可以 ...
- conda 命令笔记
1.虚拟环境 conda -V # 查看当前conda 版本 conda update conda # 更新conda conda env list 查看当前已有的虚拟环境 conda create ...
- DOCKER - 构建一个docker镜像并跑起来
一.有个基础镜像 1.基础镜像的选择 当前市场有众多可选择的基础docker镜像,可参考: https://blog.csdn.net/nklinsirui/article/details/80967 ...
- 操作系统:Linux进程与线程
这里是一部分内容,还会做修改. 一:目的及内容 学习fork(),exec,pthread库函数的使用,阅读源码,分析fork,exec,pthread_create函数的机理 代码实现: 进程A创建 ...
- 关于优先队列的总结II
优先队列这个数据结构还是很有用的,可以帮我们解决很多棘手的排序的问题,所以再来细细看一下, priority_queue<Type, Container, Functional> Type ...
- acm 快速傅里叶变换的理解
A(x)=A4[0](x*x)+x*A4[1](x*x);x=1,w,w*w,w*w*wwi means w^in=4;w=w[4]result shuould bey[0]=A4[0](1*1)+1 ...