www.cnblogs.com/Mainz/archi…html
1)直接修改代码。设计模式
2)直接修改代码,但只局限在一个类或方法中。架构
3)利用继承,编写子类继承之后的类,在子类里添加新的业务逻辑。框架
4)运行时对象装配。 将类的实例化逻辑移到运行时,经过反射,来进行装配。Spring目前作的主要就是这些事情。到这个时候才真正知足开闭原则。 Spring给咱们提供了一个很是灵活扩展的基础技术架构。设计
5)基于模块的运行时动态扩展。 OSGi给出了解决方案,能够实现模块级别的动态扩展,并且是运行时的。所谓运行时模块的动态扩展,好比说你须要增长一些新的功能,你能够将新开发的类和文件按照Bundle进行组织,而后直接扔到运行时环境下,这些功能就能够用了。代理
6)基于中间语言。框架一般定义了一些Hotspot(热点),在这些点上,能够进行扩展。cdn
工厂模式htm
抽象工厂模式对象
观察者模式:很方便增长观察者,方便系统扩展blog
模板方法模式:很方便的实现不稳定的扩展点,完成功能的重用
适配器模式:能够很方便地对适配其余接口
代理模式:能够很方便在原来功能的基础上增长功能或者逻辑
责任链模式:能够很方便得增长拦截器/过滤器实现对数据的处理,好比struts2的责任链
策略模式:经过新增策略从而改变原来的执行策略