在实现系统功能的时候,通常会首先定义好功能的接口,在系统功能不断被实现的过程中,慢慢的发现有些接口的实现很类似,这个时候通常会开始做一次抽象,形成一个共同的部分,^_^,慢慢的系统形成了一个抽象的层次,而为了通用,通常是通过定义接口,形成一个抽象类,抽象类中暴露出一些抽象方法供外部扩展实现,逐步的积累抽象类后慢慢形成一个基础框架,而外部在使用时通常可通过继承抽象类的方式来复用、扩展和实现自己的功能。
通常在一些产品级的开发平台上就会提出配置的方式去复用、扩展和实现自己的功能,而不是通过编写代码的方式,其实就是在上面的基础框架上再做了一级抽象,也就是提供了对于将基于基础框架的抽象类的抽象方法的实现再做了次共性的分析,形成了一种通用的实现,然后将实现部分暴露一些可配置点,其实也可以想象这个时候同样可以暴露一些抽象方法,呵呵,只是配置让人感觉不是写代码,很舒服,而且更有利于即时生效的实现。
再深入的想想,其实觉得为什么MDA是可行的,但又是难推广的觉得是同样的道理,MDA将模型经过一级一级的抽象,最后形成的模型固然是一个非常灵活的模型,可通过配置形成多种多样的系统功能,但它带来了在抽象层次的难度,这个通常来说不是那么容易做到的....而且其实在做一级一级的抽象的时候如果做的不够的话,通常会导致基于抽象无法完成特定的功能,这个时候对于框架来讲通常会变得比较的麻烦
系统功能---->(一次抽象后)-----通用系统功能------>(二次抽象后)-----基础框架----->(三次抽象后)----->开发平台----->...... 一直这么抽象下去,最后系统会变成什么呢?那个模型又有什么人懂呢?灵活性、扩展性、简易性、可维护性,都是值得深思的问题.....