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 ...
随机推荐
- Flink-v1.12官方网站翻译-P016-Flink DataStream API Programming Guide
Flink DataStream API编程指南 Flink中的DataStream程序是对数据流实现转换的常规程序(如过滤.更新状态.定义窗口.聚合).数据流最初是由各种来源(如消息队列.套接字流. ...
- Eureka详解系列(四)--Eureka Client部分的源码和配置
简介 按照原定的计划,我将分三个部分来分析 Eureka 的源码: Eureka 的配置体系(已经写完,见Eureka详解系列(三)--探索Eureka强大的配置体系): Eureka Client ...
- 2013 Asia Hangzhou Regional Contest hdu4780 Candy Factory
参考:https://blog.csdn.net/sd_invol/article/details/15813671 要点 每个任务的结束时间是固定的,不受任何因素影响 机器只在最一开始有用,在那之后 ...
- The Preliminary Contest for ICPC Asia Nanjing 2019 A The beautiful values of the palace(树状数组+思维)
Here is a square matrix of n * nn∗n, each lattice has its value (nn must be odd), and the center val ...
- Codeforces Round #652 (Div. 2) D. TediousLee(dp)
题目链接:https://codeforces.com/contest/1369/problem/D 题意 最初有一个结点,衍生规则如下: 如果结点 $u$ 没有子结点,添加 $1$ 个子结点 如果结 ...
- 2020牛客暑期多校训练营 (第二场) All with Pairs
传送门:All with Pairs 题意:给你n个字符串,求出,f(si,sj)的意思是字符串 si 的前缀和字符串 sj 后缀最长相等部分. 题解:先对所有的字符串后缀hash,用map记录每个h ...
- 2019牛客多校 Round8
Solved:3 Rank:261 E Explorer (线段树) 题意:n个点 m条边 每条边只有身高l,r内的人可以穿过 问有几种身高可以从1走到n 题解:把l,r离散化后(左闭右开) 线段树叶 ...
- Educational Codeforces Round 88 (Rated for Div. 2) D. Yet Another Yet Another Task(枚举/最大连续子序列)
题目链接:https://codeforces.com/contest/1359/problem/D 题意 有一个大小为 $n$ 的数组,可以选取一段连续区间去掉其中的最大值求和,问求和的最大值为多少 ...
- 【uva 1151】Buy or Build(图论--最小生成树+二进制枚举状态)
题意:平面上有N个点(1≤N≤1000),若要新建边,费用是2点的欧几里德距离的平方.另外还有Q个套餐,每个套餐里的点互相联通,总费用为Ci.问让所有N个点连通的最小费用.(2组数据的输出之间要求有换 ...
- fzu2198 快来快来数一数
Accept: 204 Submit: 627 Time Limit: 1000 mSec Memory Limit : 65536 KB Problem Description n个六 ...