`
pf_miles
  • 浏览: 135852 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在关注技术实现的同时,别忘了设计模式的威力

    博客分类:
  • Java
阅读更多

最近在考虑一个问题: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#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...

    设计模式:基于C#的工程化实现及扩展.pdf

    设计模式:基于C#的工程化实现及扩展

    软件设计模式期末作业

    在提供的文件“期末作业实验报告.docx”和“FinalText”中,可能包含了使用这三种设计模式的具体实现案例、代码示例以及分析。这些文件可以帮助我们深入理解如何在实际项目中应用这些设计模式,如何通过它们提高代码...

    软件设计模式大作业

    软件设计模式大作业 本资源为一份完整的软件设计模式大作业,涵盖了六...本资源为一份完整的软件设计模式大作业,涵盖了六种设计模式的应用,展示了蛋糕订购系统的设计和实现过程,提供了一个完整的软件设计模式示例。

    设计模式课程设计---使用5个以上不同的设计模式完成(java)

    在本设计模式课程设计中,我们重点探讨了五个核心的设计模式:原型模式、单例模式、抽象工厂模式、代理模式和建造者模式。这些模式在Java编程中具有广泛的应用,能够帮助开发者创建更加灵活、可扩展和易于维护的代码...

    界面设计模式第二版 原版

     同时,随着网络和技术的不断发展,《界面设计模式(第2版)》在第1版的基础上,更新了几乎所有的模式示例和说明,并新增了两章全新的移动应用和社交媒体设计模式,帮助读者在这两个新的领域从更高的起点开始设计。...

    C#设计模式/常见设计模式的解析和实现(C++)/设计模式迷你手册.rar

    创建型模式关注对象的创建过程,如单例模式、工厂方法模式和建造者模式。结构型模式处理对象组合和类继承,如适配器模式、装饰器模式和代理模式。行为型模式则涉及对象间职责分配和通信,如观察者模式、策略模式和...

    深入浅出设计模式 完整扫描版

    《深入浅出设计模式》总结了许多系统软件在设计开发过程中的难点,力图将设计模式的实际应用与实现原理有机结合起来,破解软件开发人员在学习设计模式过程不能透彻理解并灵活运用设计模式的难题。  所有章节都是先...

    设计模式:可复用面向对象软件的基础(非扫描版+高清)

    提到的资源不仅涵盖设计模式,还涉及到Linux、C++、Qt、嵌入式和Web等领域,这意味着这些资源可以帮助开发者在多个技术栈中应用设计模式,实现更高效、灵活的软件开发。 8. **学习路径建议** 对于初学者,可以从...

    C++设计模式--基于Qt4开源跨平台开发框架

    《C++设计模式--基于Qt4开源跨平台开发框架》一书主要探讨了如何在C++编程中利用设计模式,并结合Qt4框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...

    C#设计模式.PDF

    这是一个引人思考的问题,旨在探讨软件设计中的某些基本哲学问题,比如在软件开发过程中,应该先设计还是先实现? ### 4. 大瓶子套小瓶子还是小瓶子套大瓶子? 这个问题可能用来比喻设计模式中的“容器模式”思想...

    刘伟设计模式和例子

    这些模式关注对象的组合和结构,帮助构建更复杂的系统,实现松耦合。 3. 行为型模式:包括策略模式、模板方法模式、观察者模式、迭代器模式、命令模式、责任链模式、备忘录模式、状态模式、访问者模式和解释器模式...

    23种设计模式彩图-pdf高清版

    设计模式有助于重用设计、提升可维护性,同时减少开发过程中出现错误的可能。 本书中的23种设计模式分为三大类:创建型模式、结构型模式和行为型模式。 创建型模式涉及对象实例化的机制,它提供了一种在不暴露对象...

    设计模式 lexi

    创建型模式关注对象的创建,如单例模式、工厂模式和建造者模式等,它们提供了一种方式来封装对象的创建过程,使得系统更加灵活,易于扩展。结构型模式则关注如何将类和对象组合在一起,形成更大的结构,例如适配器...

    w3school 设计模式教程 飞龙整理 20141001

    设计模式是软件开发中的一种重要概念,它代表了在实践中被广泛接受并验证过的最佳解决方案。...在实际项目中,根据具体需求选择合适的设计模式,可以显著提高代码质量,降低维护成本,同时促进团队间的有效沟通。

    lua设计模式总结

    1、简单工厂模式lua实现 2、工厂方法模式lua实现 3、原型模式lua实现 4、建造者模式lua实现 5、单例模式lua实现 6、抽象工厂模式lua实现 结构型模式 1、装饰模式lua实现 2、代理模式lua实现 3、外观模式lua实现 4、...

    java设计模式程序源代码 张跃平 耿祥义

    创建型模式关注对象的创建,如单例模式(Singleton)、工厂模式(Factory Method)和建造者模式(Builder)。结构型模式涉及如何组合对象和类,如代理模式(Proxy)、适配器模式(Adapter)和装饰器模式(Decorator...

    C++ Qt设计模式源代码

    书是美国萨福克大学已使用十余年的经典教程,利用跨平台开源软件开发框架Qt阐释了C++和设计模式中的主要思想。全书共分四个部分:第一部分介绍C++、UML、Qt、模型-视图、SQL、XML、设计模式等基础知识,目的是为零...

    时间触发嵌入式系统设计模式--配套光盘

    在《时间触发嵌入式系统设计模式》这本书中,作者深入浅出地探讨了如何通过精心设计和优化调度策略来实现这种系统。光盘中的内容,特别是与8051系列微控制器相关的部分,提供了实际应用开发的实例,帮助读者更好地...

    Java设计模式demo

    行为型模式关注于对象之间的责任分配,比如命令模式(Command)将请求封装为一个对象,使得可以使用不同的请求参数化其他对象,责任链模式(Chain of Responsibility)避免将处理逻辑硬编码在一个对象中,让多个对象...

Global site tag (gtag.js) - Google Analytics