/**
代理模式语义:有一个类,然后想对这个类进行增强,把一些控制类放入这个类的某个方法的前后,因为是对方法的扩展,所以把方法变成接口实现插拔
"/
//从某种意义上说两种TimeProxy 都是Tank的代理,这两个都是代理的实现
//比如一个类Tank,想为这个move前后加些逻辑,方面一:继承,就重写他啊
class Tank{
public void move(){
}
}
class TimeProxy extends Tank{
public void move(){
long start = System.currentTimeMillis();//前逻辑
super.move();
long end = System.currentTimeMillis();//后逻辑
System.out.println(end-start);
}
}
//方法二:聚合
class TimeProxy {
Tank t;
public void move(){
long start = System.currentTimeMillis();//前逻辑
t.move();
long end = System.currentTimeMillis();//后逻辑
System.out.println(end-start);
}
}
/*区别是什么:用继承的话,类会随着需求的增加而无限的继承下去
下面看案例:
如果要再有一个log记录怎么办
当然第一种和第二种方法都要写LogProxy,如果我需要先记录日志后记录时间呢
在第一种方法下只能再写一个Log_Time_Proxy
但第二种方法就不用了,让他们都搞一个接口出来,想怎么插就怎么插
*/
class Tank implements Moveable{ //坦克有一个Moveable接口
public void move(){
}
}
class TimeProxy implements Moveable{ //坦克
//Tank t;
Moveable t ;
public TimeProxy (Moveable t){
this.t = t; //接口插槽设置
}
public void move(){
long start = System.currentTimeMillis();//前逻辑
t.move();
long end = System.currentTimeMillis();//后逻辑
System.out.println(end-start);
}
}
class LogProxy implements Moveable{ //坦克
//Tank t;
Moveable t ;
public LogProxy(Moveable t){
this.t = t; //接口插槽设置
}
public void move(){
Log记录//前逻辑
t.move();
}
class Logic{
public static void main(String[] args){
Tank t = new Tank();
TimeProxy time = new TimeProxy(t);
LogProxy log = new LogProxy(time);
log.move();
}
}
/*注意:这里的Moveable t 我把他叫做接口中实体元件架,就相当于插座中的铜片片,这个铜片片可以来接收一个插头一样
implements Moveable-----使得自己可以变成一个标准件实体,自己可以被插入到别人的插槽中,方便赋予别人。我把他叫获得Moveable 插头能力
Moveable t ;
public TimeProxy (Moveable t){
this.t = t; //接口插槽设置
}
这个则是使得自己有一个插孔,有一个铜片片可以接收别人的插入,我把他叫做Moveable插孔能力
*/
分享到:
相关推荐
在这种模式下,由于所需的采样带宽较低,逻辑分析仪内部的存储器充当一个缓冲(FIFO),从而允许采集到的数据通过USB接口及时传输到PC端。这种模式下的主要优点是实现了长时间不间断的信号记录,大大提高了数据帧的...
静态代理是一种代理模式,其主要目的是在不修改原始对象(被代理对象)的基础上,通过一个中间代理类来控制对原始对象的访问。代理类通常会增加额外的功能或控制,如日志记录、权限检查、缓存等,而这些功能对原始...
本实验的目的是掌握组合逻辑电路的分析方法和设计方法,并熟悉示波器与逻辑分析仪的使用。实验中,我们需要设计一个代码转换电路,输入为 4 位 8421 码,输出为 4 位循环码。我们将通过卡诺图化简和proteus软件实现...
为解决这个问题,本文提出基于STM32的逻辑分析仪的设计与实现。设计中采用ST公司的STM32处理器搭建下位机平台,下位机采集各点的电平,以及通过STM32系列的USB接口部件,与上位机构成通信,把采集的数据及时发送给...
"静态时序分析与逻辑设计" 静态时序分析(STA)是一种重要的数字集成电路设计技术,旨在确保数字电路的时序正确性。STA 的主要目的是检测和优化数字电路中的时序问题,以确保电路的正确运行。 STA 的概念和目的 ...
总体来说,LA2016逻辑分析仪是一个强大而灵活的工具,结合其配套的软件,可广泛应用于电子产品研发、生产测试、故障诊断等多个领域。正确理解和使用这款设备,能够大大提高工程师的工作效率,提升产品的质量和可靠性...
然后,依据逻辑函数式制作了一个真值表,最后通过真值表分析得出该电路是一个同或逻辑电路。 总结来说,组合逻辑电路因其结构简单且输出仅依赖于当前输入而不受过去事件的影响,在数字电路设计中占有重要地位。掌握...
6. **仿真分析**:利用SolidWorks Simulation模块,对插头进行力学分析,比如静态强度、接触压力分析,确保在实际应用中的安全性和可靠性。 7. **优化设计**:根据分析结果调整材料选择和结构,优化设计以达到最佳...
一个逻辑表达式如果对于其变元的任一种取值都为真,则称为重言式;反之,如果对于其变元的任一种取值都为假,则称为矛盾式;然而,更多的情况下,既非重言式,也非矛盾式。试写一程序,通过真值表判断一个逻辑表达式...
在这个特定的压缩包文件“电子政务-带保护器的电源插头插座.zip”中,核心内容可能是关于在电子政务场景下,如何使用带有保护器的电源插头插座来确保设备安全和稳定运行。 标签“资料”表明,这个文件可能包含了一...
本文首先分析了概念模型和逻辑模型之间的区别和联系,然后提出了一种形式化的方法来实现这两者之间的转换,并构建了一个模型验证框架来保证转换后模型的一致性。 在文章中,概念模型主要描述的是企业的业务需求,它...
### 模糊逻辑系统的C语言实现方法 #### 引言 模糊逻辑作为一种处理不精确信息的有效手段,在控制领域中有着广泛的应用。随着计算机技术的发展,将模糊逻辑理论应用于实际控制系统中变得越来越重要。传统的模糊逻辑...
总结来说,这个实验是一个实践性的项目,旨在让学生亲手设计一个四位ALU,从而加深对计算机硬件基础的理解,掌握逻辑门电路和超前进位技术的应用,以及电路设计和验证的基本流程。通过这样的实验,学生不仅能在理论...
### 动态网站静态化的实现方法 随着互联网技术的发展与用户需求的变化,网站设计与开发领域不断探索新的优化方案以提升用户体验与系统性能。其中,动态网站静态化是一种被广泛采用的技术手段,尤其是在Java EE环境...
当一个类被声明为Spring的Bean并标注了特定的注解,如`@Transactional`,Spring就会在运行时生成一个代理对象,拦截方法调用并自动处理事务。动态代理的优势在于代码的灵活性和可扩展性,可以应对更多变化的需求。 ...
通过这样的设计和实现,学生不仅能够理解计算机硬件的工作原理,还能实际动手构建一个可以执行特定指令集的简单计算机模型。这不仅加深了对计算机体系结构的理解,也为后续更深入的系统级编程和硬件设计打下了坚实...
组合逻辑电路作为数字电路的重要组成部分,不仅在理论上占有重要地位,而且在实际工程应用中...随着数字电路技术的不断进步,组合逻辑电路的设计和应用将更加广泛,其在实现各种复杂数字系统中的作用也将越来越重要。
输入电压范围为-50V到+50V,等效输入阻抗为220KΩ,配有一个可调节范围为-4V到+4V的阈值电压,以及USB 2.0接口。待机电流为130mA,最大工作电流为280mA。 三、支持的协议类型: Kingst LA5016支持多种标准协议,...
标题中的“电缆插头[手册]”指明了文档的性质,这是一个专门针对电缆插头的操作手册。电缆插头是电气设备中用于连接电缆和设备的重要组成部分,它确保了电流或信号的正确传输。手册通常会详细说明电缆插头的安装、...