状态模式

当你开发的项目通常是由一个一个的状态以及状态之间的转换构成时,可以考虑使用状态模式。先看一下状态模式的类图,和适配器模式特别像
我们来拿深入浅出上面的糖果机来做例子,代码有点多,就不写了。可以自己下这本书来看。感觉还是挺好玩的。

代理模式

所谓的代理模式,就是用这个代理去代表某个对象,从而实现某些功能。比如这个代理是个监视器,负责监视代理对象的一些状态。或者你需要用这个代理获得远程对象的数据等等。
java中最典型的的代理模式就是RMI远程通信。RMI在客户端和服务器端都持有相同的一组接口,这组接口的实现在客户端,和服务器端有点区别。
我们来看看Java的RMI是如何实现的:

先不写了,代理模式也比较简单,RMI比较难

静态代理模式其实很常见,比如买火车票这件小事:黄牛相当于是火车站的代理,我们可以通过黄牛买票,但只能去火车站进行改签和退票。在代码实现中相当于为一个委托对象realSubject提供一个代理对象proxy,通过proxy可以调用realSubject的部分功能,并添加一些额外的业务处理,同时可以屏蔽realSubject中未开放的接口。

1、RealSubject 是委托类,Proxy 是代理类;
2、Subject 是委托类和代理类的接口;
3、request() 是委托类和代理类的共同方法;

具体代码实现如下:

interface Subject {void request(); } class RealSubject implements Subject { public void request(){ System.out.println("RealSubject"); } } class Proxy implements Subject { private Subject subject; public Proxy(Subject subject){ this.subject = subject; } public void request(){ System.out.println("begin"); subject.request(); System.out.println("end"); } } public class ProxyTest { public static void main(String args[]) { RealSubject subject = new RealSubject(); Proxy p = new Proxy(subject); p.request(); } }

动态代理前面的文章写了,记住就好了。

深入浅出设计模式之状态模式、代理模式相关推荐

  1. Java设计模式(10)代理模式(Proxy模式)

    理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...

  2. 设计模式(四)--代理模式

    设计模式(四)–代理模式 文章目录 设计模式(四)--代理模式 其他链接 代理模式 1.简介 2.静态代理 角色 代码实现 好处 3.动态代理 代码实现 解析 其他链接 JVM学习笔记(一) JVM学 ...

  3. 设计模式之----Java动态代理模式

    在Spring中,有很多设计模式被应用,其中不乏代理模式.而代码模式中,就一定少不了动态代理模式.今天就对动态代理模式进行学习记录. 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托 ...

  4. C++设计模式 | 四种结构型模式——代理模式、外观模式、适配器模式、装饰模式...

    结构型模式:让类和类进行组合,获得更大的结构. 代理模式 代理模式的定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端 ...

  5. 【设计模式与体系结构】代理模式

    [设计模式与体系结构]代理模式 文章目录 [设计模式与体系结构]代理模式 一.实例分析 二.代码实现 三.实现结果 一.实例分析 (1) 代理模式设计一个房产中介的模拟程序. 要求:房产中介有介绍和代 ...

  6. 设计模式学习之1—代理模式

    设计模式学习之1-代理模式 0.?先看这里 --- 诗雨的学习说明 1.从生活中初识代理 2.代理模式的类图和角色 3.静态代理和动态代理 4.静态代理 和 动态代理 的 使用模板 4.1 静态代理使 ...

  7. 《拉勾Java高薪课程》阶段一输出 之 通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式)--菜鸟小回

    通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式) 文章目录 通过房屋租赁流程理解设计模式(单例模式,代理模式,工厂模式) @[toc] 一.单例模式 1. 相关概念 2. 演示思路 3. ...

  8. 设计模式 — 结构型模式 — 代理模式

    目录 文章目录 目录 代理模式 应用场景 代码示例 代理模式 代理模式,为其他对象提供一种代理,以此控制一个对象的访问方式.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户 ...

  9. 设计模式之禅【代理模式】

    真刀实枪之代理模式 我是游戏至尊 "最近几年王者荣耀的热度飙升,自己打时可以体验到其中的升级乐趣,但是时间过得很快啊!自己不想打,找代练,好主意!" 作为一名程序员,先将打游戏这段 ...

  10. 23种设计模式学习记录之代理模式

    想说的话: 在大学的时候曾经学过这23种设计模式,但是那时没啥编程经验,糊里糊涂过了一遍,没多久就忘记了,工作之后将精力主要集中在学习新技术上,比如springboot,cloud,docker,vu ...

最新文章

  1. python 井字游戏
  2. 后代选择+++margin-right:auto
  3. Prototype使用$R()函数
  4. python爬虫常用第三方库
  5. cocos2d-x学习笔记10:动作3:补间动作
  6. 解决办法:自动挂载失效,VirtualBox共享文件夹给Ubuntu虚拟机
  7. 华为ensp模拟校园网/企业网实例(精品拓扑图)
  8. 测绘类(遥感)投稿期刊(卓越期刊、EI、CSCD、核心期刊)汇总,内附投稿链接
  9. AutoJs学习-实现日期农历时间显示
  10. MPSK 通信系统的 Monte Carlo 仿真
  11. call方法 java_漫谈JS中的call和apply方法
  12. r语言把两个折线图图像放到一个图里_图像目标检测算法总结(从R-CNN到YOLO v3)...
  13. C语言基础语法【1】
  14. 2016弱校联盟十一专场10.2——Floyd-Warshall
  15. PowerApps教程09-下拉列表以及联动筛选
  16. 使用m2e将工程转化为maven工程后eclipse报Plugin execution not covered by lifecycle configuration:xxx plugin问题的解决方法
  17. nginx、lvs、keepalived、f5、DNS轮询(lvs为何不能完全替代DNS轮询)
  18. Pivotal Greenplum® 6.9-管理员指南
  19. 计算机专业数字逻辑考试题,数字逻辑试卷及答案.doc
  20. 微信内部跳转App:wx-open-launch-app

热门文章

  1. 黑鲨官网装机大师工具如何制作u盘启动盘,u盘启动盘制作方法
  2. 免费获取小红伞互联网安全套装2012-90天的小红伞2012激活码激活密钥小红伞
  3. jdk1.8以上连接Access数据库
  4. VC6兼容性及打开文件崩溃问题解决
  5. vue-cnode使用vue重构cnode社区
  6. Fiddler4的安装与使用
  7. linux下svn安装与版本控制
  8. java sigar cpu使用率_sigar相关-单个进程占CPU百分比
  9. android切图双数,浅谈网页设计切图规范
  10. Android中加载ETC2压缩格式(PKM后缀)纹理