这周通过课上以及课下的学习,我对软件体系结构有了更加清楚地认识,也了学习了一部分经典的软件风格。我着重介绍一下其中的两种风格:过滤器风格和面向对象风格。
面向对象风格
抽象数据类型概念对软件系统有着重要作用,目前软件界已普遍转向使用面向对象系统。这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或者说是抽象数据类型的实例。对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。下面是面向对象风格的示意图
面向对象风格作为一种主流的软件体系结构风格,自然有诸多优点
1. 因为对象对其它对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其它的对象。
2. 设计者可将一些数据存取操作的问题分解成一些交互的代理程序的集合。
同样的面向对象的系统也存在着某些问题:
1.为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识。只要一个对象的标识改变了,就必须修改所有其他明确调用它的对象。
2.必须修改所有显式调用它的其它对象,并消除由此带来的一些副作用。例如,如果A使用了对象B,C也使用了对象B,那么,C对B的使用所造成的对A的影响可能是料想不到的。
解释器风格(虚拟机风格)
一个解释器通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。 具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用。
解释器风格的特点是解析和执行输入命令,然后根据解释器来更新状态。组件包括:命令解释器,程序状态,用户界面。连接器则是紧密相联的,这种风格非常灵活,但是对于用户的要求很高一个解释器通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用;解释器通常被用来建立一种虚拟机以祢合程序语义与硬件语义之间的差异。