随便谈谈
学习设计模式的过程中,有一种感觉越来越强烈,就是抽象。就是把一些重复的经常出现的东西,整理出来放在一起,写起来管理起来都方便。从最原始的循环,到后来的函数,甚至古老的代数,通过用可以代表任何数的字母抽象出一些数学公式,使得人们可以直接对公式进行研究,一个公式就代表了无数个式子,最初提出这个东西的人真是了不起的。而循环和函数,使得只需要改变几个参数值不同的其他完全相同的程序,通过把参数用变量表示,把他们放在一起,这样 只需修改一个地方的代码,就等于是改了好多地方的代码,好处是显然的。
当然,然后出现了类和对象,其实也不过是抽象的继续发展,不过这次更深刻,人们从机器里面的按部就班的死板的程序流程中看出了结构,一种和现实世界很多关系相同的结构。人们发现,某些代码和某些数据是为了完成相同的功能而存在的,于是把他们放在一起,叫做一个类。还有等等一整套的结构。这是比函数更高一级的抽象。
谈到设计模式的时候呢,面向对象的那一套什么类,继承,多态什么的东西就只能说是元素了。人们使用这些元素,把他们按照一定的结构组装起来,让他们协同工作,实现我们想要的功能和扩展性能。而设计模式便是对这一结构的抽象,因为抽象就是从一些结构相同的东西里面把那个结构拿出来,所以设计模式里面只是一些对象之间的关系,与语言无关。
以后软件会怎么发展呢,下一代更高级的抽象是怎么样的呢,难道把设计模式当作元素,拿来构造,然后定义一种方法描述不同模式之间的关系和结构?就现在看来好象不太可能。更可能的倒是组件,只要对接口进行详细的规定,大家遵守一个标准,用组件来构造软件应该是有可能的吧,也许再出来一种描述语言来描述组件之间的结构:) 。不过还是觉得太不现实,不太可能。算了 不想它了。
下次来谈谈具体的模式吧。