可扩展设计落地

系统扩展的几种形式是什么?

www.cnblogs.com/Mainz/archi…

1)直接修改代码。

2)直接修改代码,但只局限在一个类或方法中。

3)利用继承,编写子类继承以后的类,在子类里添加新的业务逻辑。

4)运行时对象装配。 将类的实例化逻辑移到运行时,通过反射,来进行装配。Spring目前做的主要就是这些事情。到这个时候才真正满足开闭原则。 Spring给我们提供了一个非常灵活扩展的基础技术架构。

5)基于模块的运行时动态扩展。 OSGi给出了解决方案,可以实现模块级别的动态扩展,而且是运行时的。所谓运行时模块的动态扩展,比如说你需要增加一些新的功能,你可以将新开发的类和文件按照Bundle进行组织,然后直接扔到运行时环境下,这些功能就可以用了。

6)基于中间语言。框架通常定义了一些Hotspot(热点),在这些点上,可以进行扩展。

哪些设计模式可以实现可扩展?

工厂模式

抽象工厂模式

观察者模式:很方便增加观察者,方便系统扩展

模板方法模式:很方便的实现不稳定的扩展点,完成功能的重用

适配器模式:可以很方便地对适配其他接口

代理模式:可以很方便在原来功能的基础上增加功能或者逻辑

责任链模式:可以很方便得增加拦截器/过滤器实现对数据的处理,比如struts2的责任链

策略模式:通过新增策略从而改变原来的执行策略

如何通过接口、抽象类实现可扩展?

你可能感兴趣的:(java,设计模式)