最近在考虑一个问题: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里了...看来时刻不能忘记设计的威力,很多时候能解决连技术也无能为力的难题。
分享到:
相关推荐
《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...
在提供的文件“期末作业实验报告.docx”和“FinalText”中,可能包含了使用这三种设计模式的具体实现案例、代码示例以及分析。这些文件可以帮助我们深入理解如何在实际项目中应用这些设计模式,如何通过它们提高代码...
软件设计模式大作业 本资源为一份完整的软件设计模式大作业,涵盖了六...本资源为一份完整的软件设计模式大作业,涵盖了六种设计模式的应用,展示了蛋糕订购系统的设计和实现过程,提供了一个完整的软件设计模式示例。
同时,随着网络和技术的不断发展,《界面设计模式(第2版)》在第1版的基础上,更新了几乎所有的模式示例和说明,并新增了两章全新的移动应用和社交媒体设计模式,帮助读者在这两个新的领域从更高的起点开始设计。...
创建型模式主要用于对象的创建过程,结构型模式涉及对象间接口的适应和组合,而行为型模式关注对象间的职责分配和通信。 本文件中提到了单件模式、工厂模式、抽象工厂模式、访问者模式、状态模式、命令模式、解释器...
创建型模式关注对象的创建过程,如单例模式、工厂方法模式和建造者模式。结构型模式处理对象组合和类继承,如适配器模式、装饰器模式和代理模式。行为型模式则涉及对象间职责分配和通信,如观察者模式、策略模式和...
结构型模式,如适配器模式、装饰器模式、代理模式等,关注于对象之间的组合关系,它们能够帮助开发者在不修改现有代码的情况下增加新功能,或者以更加灵活的方式组合对象。行为型模式则包括责任链模式、命令模式、...
《深入浅出设计模式》总结了许多系统软件在设计开发过程中的难点,力图将设计模式的实际应用与实现原理有机结合起来,破解软件开发人员在学习设计模式过程不能透彻理解并灵活运用设计模式的难题。 所有章节都是先...
《C++设计模式--基于Qt4开源跨平台开发框架》一书主要探讨了如何在C++编程中利用设计模式,并结合Qt4框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...
这是一个引人思考的问题,旨在探讨软件设计中的某些基本哲学问题,比如在软件开发过程中,应该先设计还是先实现? ### 4. 大瓶子套小瓶子还是小瓶子套大瓶子? 这个问题可能用来比喻设计模式中的“容器模式”思想...
这些模式关注对象的组合和结构,帮助构建更复杂的系统,实现松耦合。 3. 行为型模式:包括策略模式、模板方法模式、观察者模式、迭代器模式、命令模式、责任链模式、备忘录模式、状态模式、访问者模式和解释器模式...
设计模式有助于重用设计、提升可维护性,同时减少开发过程中出现错误的可能。 本书中的23种设计模式分为三大类:创建型模式、结构型模式和行为型模式。 创建型模式涉及对象实例化的机制,它提供了一种在不暴露对象...
这是我的设计模式作业:运用5个以上的设计模式创建一个系统。其中包括:1.单例模式 2.原型模式 3.抽象工厂模式+模板方法模式 4.代理模式 5.策略模式 详见博文:...
设计模式是软件开发中的一种重要概念,它代表了在实践中被广泛接受并验证过的最佳解决方案。...在实际项目中,根据具体需求选择合适的设计模式,可以显著提高代码质量,降低维护成本,同时促进团队间的有效沟通。
1、简单工厂模式lua实现 2、工厂方法模式lua实现 3、原型模式lua实现 4、建造者模式lua实现 5、单例模式lua实现 6、抽象工厂模式lua实现 结构型模式 1、装饰模式lua实现 2、代理模式lua实现 3、外观模式lua实现 4、...
设计模式C++ 实现 懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。 可以作为入门教程
《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并期望...
本书在第1章软件设计模式概述后,从第2章到第24章诠释23个软件设计模式。每一种都以一个生活故事开始,然后是模式定义、模式分析、模式实现、设计原则和使用场合。模式实现通过Eclipse中的Java工程展开,采用软件...
创建型模式关注对象的创建,如单例模式(Singleton)、工厂模式(Factory Method)和建造者模式(Builder)。结构型模式涉及如何组合对象和类,如代理模式(Proxy)、适配器模式(Adapter)和装饰器模式(Decorator...
在《时间触发嵌入式系统设计模式》这本书中,作者深入浅出地探讨了如何通过精心设计和优化调度策略来实现这种系统。光盘中的内容,特别是与8051系列微控制器相关的部分,提供了实际应用开发的实例,帮助读者更好地...