Java编程--简单的Proxy程序(代理设计模式)
有时候对象要完成某项任务(功能)需要很多步骤,而这些步骤全部交给对象自己完成显然是不现实的,就像我们人要吃饭,你总不能要求我们每个人都去种地、打面、做饭一样,我们只需要完成其中的吃饭这一核心操作就可以了,而其他的辅助操作就交给代理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程序(代理设计模式)的更多相关文章
- Java编程的逻辑 (86) - 动态代理
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- Java编程的逻辑 (54) - 剖析Collections - 设计模式
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- java 编程基础 Class对象 反射:代理模式和静态代理
生活中的代理 类(对象)代理模式 代理模式是面向对象编程中比较常见的设计模式. 1. 用户只关心接口功能,而不在乎谁提供了功能.上图中接口是 Subject 2. 接口真正实现者是上图的 RealSu ...
- java 之 简单工厂模式(大话设计模式)
以前只是看设计模式,每次看完都去理解一次,并没有手动去写代码,所以理解的还不是很深刻,最近查看框架源码,发现很多地方用到的都是设计模式,因为对设计模式理解的不够深刻,所以源码查看进度很慢!现在决定来温 ...
- 【自学编程】C语言编程简单的小程序,计算长方体体积!
计算长方体体积 有朋友会说长方体体积还不好算吗?长X宽X高.没错用计算器一下就可以出结果,编程反而麻烦些,但是我们说的是这种思维,如果复杂的重复运算的话写好程序就非常简单了. 简单运算下一个固定高度的 ...
- java编写简单的累加程序
编程思路:1.建立类包demo: 2.在类包中建立CommanParameter类: 3.利用for循环通过强制类型转换将在后台中输入的String类型的字符转换为整型并进进累加操作: package ...
- Java编程打开运行exe程序
String path = "notepad.exe"; //(C:\Program Files\Tencent\QQ\Bin\qq.exe) try { Runtime runt ...
- Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理
面试问题:Java里的代理设计模式(Proxy Design Pattern)一共有几种实现方式?这个题目很像孔乙己问"茴香豆的茴字有哪几种写法?" 所谓代理模式,是指客户端(Cl ...
- Java代理设计模式(Proxy)的几种具体实现
Proxy是一种结构设计模型,主要解决对象直接访问带来的问题,代理又分为静态代理和动态代理(JDK代理.CGLIB代理. 静态代理:又程序创建的代理类,或者特定的工具类,在平时开发中经常用到这种代理模 ...
- 设计模式之Proxy(代理)(转)
理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...
随机推荐
- [源码分析] Facebook如何训练超大模型--- (5)
[源码分析] Facebook如何训练超大模型--- (5) 目录 [源码分析] Facebook如何训练超大模型--- (5) 0x00 摘要 0x01 背景 0x02 思路 2.1 学习建议 2. ...
- Linux驱动---字符设备
目录 一.基础简介 1.1.Linux设备驱动分类 1.2.字符设备驱动概念 二.驱动基本组成 2.1.驱动模块的加载和卸载 2.2.添加LICENNSE以及其他信息 三.字符设备驱动开发步骤 3.1 ...
- MarkDown学习使用图片
学习MarkDown使用
- 百万架构师第四十一课:RabbitMq:可靠性投递和实践经验|JavaGuide
来源:https://javaguide.net RabbitMQ 2-可靠性投递与生产实践 可靠性投递 首先需要明确,效率与可靠性是无法兼得的,如果要保证每一个环节都成功,势必会对消息的收发效率 ...
- 解决黑群晖 Docker 日志八小时时间差的有效方法
步骤一:登录黑群晖控制台 首先,我们需要登录到黑群晖控制台.可以通过SSH登录,或是直接在黑群晖控制台界面上操作. 步骤二:停止相关的Docker容器 在解决时间差问题之前,我们需要停止相关的Dock ...
- 使用cy7c68013调试mt9v011 ov7670 摄像头测试 icamera视频采集调试
使用cy7c68013调试mt9v011 ov7670 摄像头测试 icamera视频采集调试 采集底板选用cp601d,原理图参考icamera设计,使用cy7c68013a芯片设计,固件刷ic ...
- 使用Node.js对接StockTV全球金融市场数据API
使用Node.js对接StockTV全球金融市场数据API 摘要:本文详细介绍了如何通过Node.js客户端库快速接入StockTV全球金融市场数据API,涵盖股票.外汇.期货和加密货币的实时行情获取 ...
- [评测/调研/AIGC/流媒体] 视频内容自动生成摘要工具
概述:视频内容自动生成摘要工具 SolidPoint | 仅支持 简介 SolidPoint 是一款AI驱动的在线视频摘要工具,专注于自动生成YouTube视频的简洁摘要. 通过分析视频内容提取关键点 ...
- 【Jmatpro 10.0】根据材料牌号输出应力-应变曲线
1.前提条件 Jmatpro 软件 一个材料牌号或者材料成分数据 2. 步骤 以 X15Cr 13牌号金属为案例 材料数据来自:材数库 运行jmatpro软件 选择 material type:sta ...
- Processing (Java) 中实现2D任意图形的鼠标悬停检测 · 2D射线检测 · 模拟按钮 · 点击事件
引言 如果使用Processing开发应用,画面中需要设定一些按钮,而且这些按钮是不规则图形样式,甚至是以一张图片形式呈现,如何判定其轮廓,定义悬停事件.点击事件是非常核心的算法需求.本文浅析这一问题 ...