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. cassandra权威指南读书笔记--Cassandra架构(3)

    分阶段事件驱动架构 SEDASEDA(Staged Event-Driven Architecture)的核心思想是把一个请求处理过程分成几个Stage,不同资源消耗的Stage使用不同数量的线程来处 ...

  2. 聊聊elasticsearch7.8的模板和动态映射

    最近想写一篇es的索引的一个设计,由于设计的东西特别多,当然,elasticsearch的模板和动态映射也是其中的一个设计点,所以干脆先来聊聊索引的模板和动态映射,模板,听这个名字就相当于一些公共可用 ...

  3. workflow定时任务部分失败

    workflow遇到一个问题,每天定时任务导致部分失败,截图如下 目前这个问题现场出现过是重启wf解决的 ,但是也给研发排查了,根本原因不清楚,不确保现场还会再遇到.

  4. AtCoder Beginner Contest 188 E - Peddler (树)

    题意:有\(n\)个点,\(m\)条单向边,保证每条边的起点小于终点,每个点都有权值,找到联通的点的两个点的最大差值. 题解:因为题目说了起点小于终点,所以我们可以反向存边,然后维护连通边的前缀最小值 ...

  5. Codeforces Global Round 11 B. Chess Cheater (贪心,结构体排序)

    题意:你和朋友进行了\(n\)个回合的棋艺切磋,没有平局,每次要么输要么赢,每次赢可以得一分,假如前一局也赢了,那么可以得两分,结果已成定局,但是你确可以作弊,最多修改\(k\)个回合的结果,问你作弊 ...

  6. Java中赋值常量的注意事项

    写在前面: 从网上学习的赋值规则 摘录自网络,标明出处 byte,short,int,long 比如 int a = 234; 此处的常量234类型默认是int,如果要将大的整数赋值给变量的话 必须 ...

  7. [APUE] 进程控制

    APUE 一书的第八章学习笔记. 进程标识 大家都知道使用 PID 来标识的. 系统中的一些特殊进程: PID = 0: 调度进程,也称为交换进程 (Swapper) PID = 1: init 进程 ...

  8. 带有Python的音频处理(附带源码)

    由于博客播放不了音频,所以音频将以视频形式展现.公众号也正在进行抽书 音频素材请点击这里进行观看 往下拉就是文章地址 有时,在进行编程时,我们需要进行一些音频处理.编程中最常用的音频处理任务包括–加载 ...

  9. VMware虚拟化与Kubernetes(K8s)类比阐述-适合VMware用户

    概述 容器技术是最近几年非常热门的技术,它似乎就是为云端的应用量身定制的,所以它也被贴上了云原生应用 (Cloud Native Application) 技术的标签.目前最为流行的容器管理调度平台是 ...

  10. 使用DTK创建模糊背景窗口并自定义阴影效果

    DTK是deepin开发的基于Qt的开发套件,提供了大量的具有独特风格的美化控件,也提供了很多非常方便的API,下边我们用DTK实现一个模糊窗口,并设置其阴影效果. 使用场景 一切需要模糊窗口作为美化 ...