最近在考虑一个问题: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”中,可能包含了使用这三种设计模式的具体实现案例、代码示例以及分析。这些文件可以帮助我们深入理解如何在实际项目中应用这些设计模式,如何通过它们提高代码...
软件设计模式大作业 本资源为一份完整的软件设计模式大作业,涵盖了六...本资源为一份完整的软件设计模式大作业,涵盖了六种设计模式的应用,展示了蛋糕订购系统的设计和实现过程,提供了一个完整的软件设计模式示例。
在本设计模式课程设计中,我们重点探讨了五个核心的设计模式:原型模式、单例模式、抽象工厂模式、代理模式和建造者模式。这些模式在Java编程中具有广泛的应用,能够帮助开发者创建更加灵活、可扩展和易于维护的代码...
创建型模式主要用于对象的创建过程,结构型模式涉及对象间接口的适应和组合,而行为型模式关注对象间的职责分配和通信。 本文件中提到了单件模式、工厂模式、抽象工厂模式、访问者模式、状态模式、命令模式、解释器...
创建型模式关注对象的创建过程,如单例模式、工厂方法模式和建造者模式。结构型模式处理对象组合和类继承,如适配器模式、装饰器模式和代理模式。行为型模式则涉及对象间职责分配和通信,如观察者模式、策略模式和...
提到的资源不仅涵盖设计模式,还涉及到Linux、C++、Qt、嵌入式和Web等领域,这意味着这些资源可以帮助开发者在多个技术栈中应用设计模式,实现更高效、灵活的软件开发。 8. **学习路径建议** 对于初学者,可以从...
创建型模式关注对象的创建,结构型模式关注类和对象的组合,行为型模式关注对象之间的交互和责任分配。 2. **创建型设计模式** - 单例模式:保证一个类只有一个实例,并提供全局访问点。 - 工厂方法模式:定义一...
《深入浅出设计模式》总结了许多系统软件在设计开发过程中的难点,力图将设计模式的实际应用与实现原理有机结合起来,破解软件开发人员在学习设计模式过程不能透彻理解并灵活运用设计模式的难题。 所有章节都是先...
这是一个引人思考的问题,旨在探讨软件设计中的某些基本哲学问题,比如在软件开发过程中,应该先设计还是先实现? ### 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#实现MVC设计模式,虽然这个设计很简陋,可重用价值有限,但至少这是个MVC的设计模式,现在很难看到真正MVC的设计了, 很多人把asp.netMVC当作MVC, 要知道这篇文章是2005年发表的,原文: ...
另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从...
创建型模式关注对象的创建,如单例模式(Singleton)、工厂模式(Factory Method)和建造者模式(Builder)。结构型模式涉及如何组合对象和类,如代理模式(Proxy)、适配器模式(Adapter)和装饰器模式(Decorator...
在《时间触发嵌入式系统设计模式》这本书中,作者深入浅出地探讨了如何通过精心设计和优化调度策略来实现这种系统。光盘中的内容,特别是与8051系列微控制器相关的部分,提供了实际应用开发的实例,帮助读者更好地...