有时候对象要完成某项任务(功能)需要很多步骤,而这些步骤全部交给对象自己完成显然是不现实的,就像我们人要吃饭,你总不能要求我们每个人都去种地、打面、做饭一样,我们只需要完成其中的吃饭这一核心操作就可以了,而其他的辅助操作就交给代理Proxy去实现。

我们就拿吃饭这件事完成简单的代理设计模式。

代码实现

接口定义要完成的核心功能

package proxy;
/**
* 核心操作
* 2018-05-19
*/
public interface People {
public void eat();
}

完成核心功能的类

package proxy;
/**
* 完成核心操作的对象
* 2018-05-19
*/
public class Student implements People { @Override
public void eat() {
System.out.println("***学生在吃饭***");
} }

代理类设计

package proxy;
/**
* 完成辅助操作,并将核心操作交由真实对象完成
* 2018-05-19
*/
public class Proxy implements People{ private People people ; //接收一个完成核心操作的对象
public Proxy(People people) {
this.people = people;
} @Override
public void eat() {
this.prepare();//辅助
this.people.eat();//核心操作由真实对象完成
this.clean();//辅助
} public void prepare() {
System.out.println("农民伯伯种粮食,餐厅做饭等吃饭前的准备工作。");
}
public void clean() {
System.out.println("餐厅工作人员打扫卫生等收尾工作。");
} }

测试代码

package proxy;
/**
* 测试
* 2018-05-19
*
*/
public class TestDemo {
public static void main(String[] args) {
//传入完成核心操作的对象
People people = new Proxy(new Student());
people.eat();
}
}

结果:

农民伯伯种粮食,餐厅做饭等吃饭前的准备工作。
***学生在吃饭***
餐厅工作人员打扫卫生等收尾工作。

Java编程--简单的Proxy程序(代理设计模式)的更多相关文章

  1. Java编程的逻辑 (86) - 动态代理

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  2. Java编程的逻辑 (54) - 剖析Collections - 设计模式

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  3. java 编程基础 Class对象 反射:代理模式和静态代理

    生活中的代理 类(对象)代理模式 代理模式是面向对象编程中比较常见的设计模式. 1. 用户只关心接口功能,而不在乎谁提供了功能.上图中接口是 Subject 2. 接口真正实现者是上图的 RealSu ...

  4. java 之 简单工厂模式(大话设计模式)

    以前只是看设计模式,每次看完都去理解一次,并没有手动去写代码,所以理解的还不是很深刻,最近查看框架源码,发现很多地方用到的都是设计模式,因为对设计模式理解的不够深刻,所以源码查看进度很慢!现在决定来温 ...

  5. 【自学编程】C语言编程简单的小程序,计算长方体体积!

    计算长方体体积 有朋友会说长方体体积还不好算吗?长X宽X高.没错用计算器一下就可以出结果,编程反而麻烦些,但是我们说的是这种思维,如果复杂的重复运算的话写好程序就非常简单了. 简单运算下一个固定高度的 ...

  6. java编写简单的累加程序

    编程思路:1.建立类包demo: 2.在类包中建立CommanParameter类: 3.利用for循环通过强制类型转换将在后台中输入的String类型的字符转换为整型并进进累加操作: package ...

  7. Java编程打开运行exe程序

    String path = "notepad.exe"; //(C:\Program Files\Tencent\QQ\Bin\qq.exe) try { Runtime runt ...

  8. Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理

    面试问题:Java里的代理设计模式(Proxy Design Pattern)一共有几种实现方式?这个题目很像孔乙己问"茴香豆的茴字有哪几种写法?" 所谓代理模式,是指客户端(Cl ...

  9. Java代理设计模式(Proxy)的几种具体实现

    Proxy是一种结构设计模型,主要解决对象直接访问带来的问题,代理又分为静态代理和动态代理(JDK代理.CGLIB代理. 静态代理:又程序创建的代理类,或者特定的工具类,在平时开发中经常用到这种代理模 ...

  10. 设计模式之Proxy(代理)(转)

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

随机推荐

  1. 局域网 yum仓库

    有时候在局域网环境中,每台机器上挂载本地镜像充当yum仓库太麻烦. 可以选择局域网一台服务器生成yum仓库,局域网其他服务器通过http协议访问这台服务器的yum仓库. 一.准备 两台虚拟机,其中 A ...

  2. Prism 学习(一)

    转载自:http://www.cnblogs.com/Clingingboy/archive/2009/01/07/prism_part2.html 本篇将介绍Prism中Region的使用. 本篇D ...

  3. 批量删除MySQL生产环境数据库表或表字段注释脚本

    本文提供了一种批量删除MySQL生产环境中数据库表的注释或表字段注释的方法,通过脚本实现高效维护表结构的清晰性. 一.表注释修改 1.获取删除MySQL数据库表注释脚本select concat('A ...

  4. 螺旋原型设计 (Spiral Model SDLC)

    螺旋模型介绍 -:该模型描述了软件开发过程.该模型是两种模型的组合,首先是迭代模型和一个SDLC 模型,并将其与循环过程相结合. 该模型考虑了大多数其他模型通常没有注意到的风险.该模型从在一次迭代开始 ...

  5. Kubernetes - [02] 网络通讯方式

    题记部分 一.网络通讯模式   Kubernetes的网络模型假定了所有Pod都在一个可以直接连通的扁平的网络空间中,这在(GCEGoogle Compute Engine)里面是现成的网络模型,Ku ...

  6. Flume - [04] Hive Sink

    一.概述   HIVE Sink 将包含分割文本或JSON数据的事件直接流到Hive表或分区中.事件是使用Hive事务编写的.一旦一组事件被提交到Hive,它们就会立即对hive查询可见.流到其中的分 ...

  7. 【ARM+Qt+OpenCV】基于ARM的双目图像采集系统

    点击查看代码 系统使用ARM处理器,运行linux系统,Qt创建工程编写主程序,可以使用OpenCV进行图像处理. 通过两个摄像头采集会图像,在LCD上进行显示,然后通过LCD上的按钮实现退出程序.保 ...

  8. 用DeepSeek+可灵AI+剪映制作哪吒2走T台秀AI视频 (保姆级教程)

    内容首发周老师的付费社群,挑其中部分内容免费同步给公号读者 今天给大家分享如何利用DeepSeek这类AI工具,制作哪吒2走T台秀视频,保姆级的制作方法,简单易懂,小白也能轻松上手. 关键操作,分为四 ...

  9. JMeter HTTP Request Get 请求的时候 response body 为空

    已知原因: 1.Content encoding 的默认编码对应不上,需要手动设置编码为:UTF-8: 2.请求设置 Header,且设置有请求数据类型为 Content-Type: applicat ...

  10. 解决 Mac(M1/M2)芯片,使用node 14版本

    前言 nvm 在安装 Node.js v14.21.3 时,报错: nvm install 14 Downloading and installing node v14.21.3... Downloa ...