许多语言都支持反射,提供在程序运行时创建对象和修改类的内部信息。
一直觉得这样的功能挺鸡肋的,不清楚为何存在。
下面引用《面向模式的软件架构》中的一些话,来说明它为什么存在:
对于那些长期存在的应用来说,它们的可持续架构关键之处在于要能够支持变化:
随着时间的流逝,它们必须能够对不断变化和改进的技术、需求以及平台做出响应。
然而,我们很难预见应用中哪些部分会发生变化,以及何时对特定的变化做出响应。
更为复杂的是,这种对变化的需求可能在任何时候出现,特别是在产品已经投入使用的情况下。变化的规模也大不相同,从算法的本地调整到分布式基础架构的根本性改变。尽管应用通常都会经历多次变化,但是对于某些特定的变化来说,我们不希望给维护人员带来负担,而且,应当存在一种统一的机制来支持不同类型的变化。
两层架构.png因此,将应用的结构、行为以及状态方面的属性和变化因素具体化到一套元对象中。通过两层架构将元对象和核心应用逻辑分来,元数据层包含元数据,基础层包含应用逻辑。(见下图)
网友评论