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的更多相关文章

  1. 设计模式讲解2:static proxy和decorator的不同点

    声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 在常见的23种设计模式中,static proxy和decorator在代码结构上是特别相似的.那它们的不 ...

  2. Static Proxy (静态代理模式)

    1.定义一个接口 ProxyInterface.java package com.staticproxy ; public interface ProxyInterface  //就假设为 定义一个购 ...

  3. 设计模式-代理模式(Proxy Model)

    文 / vincentzh 原文连接:http://www.cnblogs.com/vincentzh/p/5988145.html 目录 1.写在前面 2.概述 3.目的 4.结构组成 5.实现 5 ...

  4. Proxy 代理模式

    简介 代理模式是用一个简单的对象来代替一个复杂的或者创建耗时的对象. java.lang.reflect.Proxy RMI 代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对 ...

  5. Dynamic proxy

    import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflec ...

  6. Proxy 动态代理 InvocationHandler CGLIB MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  7. Proxy 代理模式 动态代理 cglib MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. Dynamic proxy (good-原创)

    import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflec ...

  9. 百度地图api2.0体验

    前言:这两天在做百度地图的功能,查看了百度官网的api完成了基本功能 api地址http://developer.baidu.com/map/jshome.htm 注意是javascript API ...

随机推荐

  1. Codeforces Round #657 (Div. 2) A. Acacius and String(字符串)

    题目链接:https://codeforces.com/contest/1379/problem/A 题意 给出一个由 '?' 和小写字母组成的字符串,可以将 '?' 替换为小写字母,判断是否存在一种 ...

  2. 【noi 2.6_90】滑雪(DP)

    题意:输出最长下降路径的长度. 解法:f[i][j]表示结尾于(i,j)的最长的长度.由于无法确定4个方位已修改到最佳,所以用递归实现. 1 #include<cstdio> 2 #inc ...

  3. python的re模块一些方法 && Tkinter图形界面设计 && 终止python运行函数 && python读写文件 && python一旦给字符串赋值就不能单独改变某个字符,除非重新给变量赋值

    Tkinter图形界面设计见:https://www.cnblogs.com/pywjh/p/9527828.html#radiobutton 终止python运行函数: 采用sys.exit(0)正 ...

  4. Codeforces Round #544 (Div. 3) E. K Balanced Teams (DP)

    题意:有\(n\)个人,每个人的能力值是\(a_i\),现在你想将这些人分成\(k\)组(没必要全选),但是每组中最高水平和最低水平的人的能力差值必须\(\le 5\),问最多能选多少人. 题解:想了 ...

  5. Atcoder Beginner Contest 168 D - .. (Double Dots) (BFS)

    题意:有\(n\)个房间,在这些房间中两两连\(m\)次条边,问除了第一个房间,其他房间走到第一个房间的最短路径,输出这个房间所连的上一个房间,如果走不到,输出\(no\). 题解:刚开始我写了一个d ...

  6. Codeforces Round #650 (Div. 3) E. Necklace Assembly (暴力)

    题意:有一个字符串,要求使用其中字符构造一个环(不必全部都用),定义一个环是k美的,如果它转\(k\)次仍是原样,现在给你\(k\),要求最长的k美环的长度. 题解:我们首先看\(k\),如果一个环转 ...

  7. Git命令回退代码并同步到远程仓库

    git log 找到要回退的commit版本号并复制 git reset --hard [commitid] 本地库版本回退 git push -f origin [branchName] 同步到远端 ...

  8. 使用Github+jsDelivr搭建图床和存储服务

    使用元素 我的博客NLNet 并未搭建自己的博客,使用博客园(cnblogs),自定义了主题NLNet-Theme. 写作工具Typora 优秀的Markdown编辑器.参考NLNet-Theme,我 ...

  9. keras fit_generator 并行

    虽然已经走在 torch boy 的路上了, 还是把碰到的这个坑给记录一下 数据量较小时,我们可直接把整个数据集 load 到内存里,用 model.fit() 来拟合模型. 当数据集过大比如几十个 ...

  10. 2.API的理解和使用

    标题 : 2.API的理解和使用 目录 : Redis 序号 : 2 ​ zset的成员是唯一的,但分数(score)却可以重复. ​ 有序集合的内部编码 1.ziplist(压缩列表):当有序集合的 ...