/**
代理模式语义:有一个类,然后想对这个类进行增强,把一些控制类放入这个类的某个方法的前后,因为是对方法的扩展,所以把方法变成接口实现插拔
"/
//从某种意义上说两种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端。这种模式下的主要优点是实现了长时间不间断的信号记录,大大提高了数据帧的...
华为作为全球领先的ICT解决方案提供商,其内部培训资料《华为静态时序分析与逻辑设计》为我们提供了一个深入理解这一主题的宝贵资源。下面,我们将详细探讨该主题的知识点。 一、静态时序分析概述 静态时序分析是一...
静态代理是一种代理模式,其主要目的是在不修改原始对象(被代理对象)的基础上,通过一个中间代理类来控制对原始对象的访问。代理类通常会增加额外的功能或控制,如日志记录、权限检查、缓存等,而这些功能对原始...
在情感分析中,我们可以将每个文本映射到一个连续的特征向量,然后通过逻辑回归函数将其转换为概率预测,即该文本属于正面或负面类别的概率。逻辑回归的优势在于计算效率高、易于理解和实现,但可能对非线性关系处理...
在电子工程领域,充气机的绕线及电源插头插座安排装置是设备设计和制造中的重要环节。本文将深入探讨这两个主题,旨在提供全面、详细的行业知识。 首先,我们来了解一下“充气机的绕线”。绕线是电机、变压器和其他...
"静态时序分析与逻辑设计" 静态时序分析(STA)是一种重要的数字集成电路设计技术,旨在确保数字电路的时序正确性。STA 的主要目的是检测和优化数字电路中的时序问题,以确保电路的正确运行。 STA 的概念和目的 ...
本文将从多个维度对网络插头插座项目的节能评估报告模板进行详尽解读,旨在为相关领域的工程技术人员和政策制定者提供参考。 首先,网络插头插座项目节能评估报告的核心目的在于识别和评估项目从设计到运营的全生命...
本文档报告《机械设备(电子机械设备)类电工电气(电工电气电器)行业插头插座领域分析报告》对中国电工电气行业中插头插座领域的市场分布、消费规模、需求特征以及发展趋势等多个方面进行了深入分析,为企业战略...
然后,依据逻辑函数式制作了一个真值表,最后通过真值表分析得出该电路是一个同或逻辑电路。 总结来说,组合逻辑电路因其结构简单且输出仅依赖于当前输入而不受过去事件的影响,在数字电路设计中占有重要地位。掌握...
在电子技术领域,充电插头、充电插座以及它们之间的连接装置是至关重要的组成部分,尤其在当今这个电力设备无处不在的时代。本资料详尽地介绍了这些元件的基本概念、功能、设计原理以及相互间的配合机制。 首先,让...
在这个特定的压缩包文件“电子政务-带保护器的电源插头插座.zip”中,核心内容可能是关于在电子政务场景下,如何使用带有保护器的电源插头插座来确保设备安全和稳定运行。 标签“资料”表明,这个文件可能包含了一...
本文首先分析了概念模型和逻辑模型之间的区别和联系,然后提出了一种形式化的方法来实现这两者之间的转换,并构建了一个模型验证框架来保证转换后模型的一致性。 在文章中,概念模型主要描述的是企业的业务需求,它...
### 模糊逻辑系统的C语言实现方法 #### 引言 模糊逻辑作为一种处理不精确信息的有效手段,在控制领域中有着广泛的应用。随着计算机技术的发展,将模糊逻辑理论应用于实际控制系统中变得越来越重要。传统的模糊逻辑...
在Python数据分析和...总之,Python在数据分析和机器学习领域提供了丰富的工具和库,使得实现逻辑回归和梯度下降变得相对简单。通过深入学习和实践"chapter09"中的内容,你将能够更好地理解和应用这两种重要的算法。
但是,静态代理也存在一些缺点,如需要代理多个类时,需要编写多个代理类,每个目标对象对应一个代理类,或者维护一个庞大的代理类,实现多个接口。 三、 JDK 动态代理 JDK 动态代理是 Java 中的一种动态代理方式...
### 动态网站静态化的实现方法 随着互联网技术的发展与用户需求的变化,网站设计与开发领域不断探索新的优化方案以提升用户体验与系统性能。其中,动态网站静态化是一种被广泛采用的技术手段,尤其是在Java EE环境...
当一个类被声明为Spring的Bean并标注了特定的注解,如`@Transactional`,Spring就会在运行时生成一个代理对象,拦截方法调用并自动处理事务。动态代理的优势在于代码的灵活性和可扩展性,可以应对更多变化的需求。 ...
静态时序分析与逻辑..静态时序分析与逻辑..静态时序分析与逻辑..静态时序分析与逻辑..静态时序分析与逻辑..静态时序分析与逻辑..静态时序分析与逻辑..静态时序分析与逻辑..静态时序分析与逻辑..静态时序分析与逻辑.....
逻辑回归是一种广泛应用于分类问题中的回归分析方法,其核心思想是利用线性回归模型的预测结果通过一个逻辑函数转换成概率,进而得出分类的预测。在机器学习中,逻辑回归通常用于二分类问题,但也可以被扩展到多分类...