最近在考虑一个问题:java中如何在运行时改变方法的执行,就是在方法中动态增加一些原本代码中没有的动作。
怎么做?首先浮现在我脑子里就是那些繁琐的反射API以及AOP的想法。但反射API或Proxy类的相关API只能做到“在方法调用的前后做一些事情”,并不能做到“在方法内部做一些改动”。
我先后在学校论坛、sun中国技术社区发布帖子寻求答案。
今天突然想到一些底层的东西,发现我这个想法貌似很天真且不可能——方法里的东西,不是局部变量就是对其它函数的调用,而这些东西是被压在当前线程的调用栈里的,貌似要在运行时动态改变这些已经压栈了的东西是不可能的。
再说了,java是“强制面向对象编程语言”,能像我说的那样做的话是破坏封装的,不是java的一贯风格。
不过,sun技术社区的朋友给了一个简单有效的建议:改变设计!
大概代码如下:
public interface Interceptor{
void run();
}
public class Test{
private Interceptor interceptor;
public void setInterceptor(Interceptor inter){
this.interceptor = inter;
}
public void testMethod(){
//doSomething
if(interceptor != null){
interceptor.run();
}
//doSomething
}
}
这样,通过这个设计,就随时可以把想要额外执行的代码封装成一个Interceptor对象,然后“塞”进这个testMethod方法里,非常有新意!而且效率比反射或Proxy都高得多!绝对值得考虑!
唉~最近忙于复习java的一些基本的东西,脑袋可能僵在那一大堆API里了...看来时刻不能忘记设计的威力,很多时候能解决连技术也无能为力的难题。
分享到:
相关推荐
设计模式 23的 Python实现 代码用Python 3.6实现。 设计模式 23的 Python实现 代码用Python 3.6实现。 设计模式 23的 Python实现 代码用Python 3.6实现。
《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...
在提供的文件“期末作业实验报告.docx”和“FinalText”中,可能包含了使用这三种设计模式的具体实现案例、代码示例以及分析。这些文件可以帮助我们深入理解如何在实际项目中应用这些设计模式,如何通过它们提高代码...
软件设计模式大作业 本资源为一份完整的软件设计模式大作业,涵盖了六...本资源为一份完整的软件设计模式大作业,涵盖了六种设计模式的应用,展示了蛋糕订购系统的设计和实现过程,提供了一个完整的软件设计模式示例。
在本设计模式课程设计中,我们重点探讨了五个核心的设计模式:原型模式、单例模式、抽象工厂模式、代理模式和建造者模式。这些模式在Java编程中具有广泛的应用,能够帮助开发者创建更加灵活、可扩展和易于维护的代码...
创建型模式主要用于对象的创建过程,结构型模式涉及对象间接口的适应和组合,而行为型模式关注对象间的职责分配和通信。 本文件中提到了单件模式、工厂模式、抽象工厂模式、访问者模式、状态模式、命令模式、解释器...
创建型模式关注对象的创建过程,如单例模式、工厂方法模式和建造者模式。结构型模式处理对象组合和类继承,如适配器模式、装饰器模式和代理模式。行为型模式则涉及对象间职责分配和通信,如观察者模式、策略模式和...
《深入浅出设计模式》总结了许多系统软件在设计开发过程中的难点,力图将设计模式的实际应用与实现原理有机结合起来,破解软件开发人员在学习设计模式过程不能透彻理解并灵活运用设计模式的难题。 所有章节都是先...
提到的资源不仅涵盖设计模式,还涉及到Linux、C++、Qt、嵌入式和Web等领域,这意味着这些资源可以帮助开发者在多个技术栈中应用设计模式,实现更高效、灵活的软件开发。 8. **学习路径建议** 对于初学者,可以从...
创建型模式关注对象的创建,结构型模式关注类和对象的组合,行为型模式关注对象之间的交互和责任分配。 2. **创建型设计模式** - 单例模式:保证一个类只有一个实例,并提供全局访问点。 - 工厂方法模式:定义一...
这是一个引人思考的问题,旨在探讨软件设计中的某些基本哲学问题,比如在软件开发过程中,应该先设计还是先实现? ### 4. 大瓶子套小瓶子还是小瓶子套大瓶子? 这个问题可能用来比喻设计模式中的“容器模式”思想...
这些模式关注对象的组合和结构,帮助构建更复杂的系统,实现松耦合。 3. 行为型模式:包括策略模式、模板方法模式、观察者模式、迭代器模式、命令模式、责任链模式、备忘录模式、状态模式、访问者模式和解释器模式...
这是我的设计模式作业:运用5个以上的设计模式创建一个系统。其中包括:1.单例模式 2.原型模式 3.抽象工厂模式+模板方法模式 4.代理模式 5.策略模式 详见博文:...
同时,随着网络和技术的不断发展,《界面设计模式(第2版)》在第1版的基础上,更新了几乎所有的模式示例和说明,并新增了两章全新的移动应用和社交媒体设计模式,帮助读者在这两个新的领域从更高的起点开始设计。...
设计模式是软件开发中的一种重要概念,它代表了在实践中被广泛接受并验证过的最佳解决方案。...在实际项目中,根据具体需求选择合适的设计模式,可以显著提高代码质量,降低维护成本,同时促进团队间的有效沟通。
1、简单工厂模式lua实现 2、工厂方法模式lua实现 3、原型模式lua实现 4、建造者模式lua实现 5、单例模式lua实现 6、抽象工厂模式lua实现 结构型模式 1、装饰模式lua实现 2、代理模式lua实现 3、外观模式lua实现 4、...
C#实现MVC设计模式,虽然这个设计很简陋,可重用价值有限,但至少这是个MVC的设计模式,现在很难看到真正MVC的设计了, 很多人把asp.netMVC当作MVC, 要知道这篇文章是2005年发表的,原文: ...
另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从...
这些代码不仅能够帮助读者理解设计模式的实现细节,还能让读者看到设计模式在不同场景下的应用效果,从而提升解决实际问题的能力。 学习设计模式的意义在于,它们提供了一套通用的解决方案,可以提高代码的可读性、...
设计模式是一套被重复使用的代码设计...全书共分12章,首先强调了接口和抽象类在设计模式中的重要性,介绍了反射技术在设计模式中的应用。然后,从常用的23个设计模式中精选了10个进行了详细的讲解,包括2个创建……