软件开发,需要一定的灵活性。
要实现灵活性,通常是根据配置信息,动态灵活地执行不同代码。
比如一个Asp.net程序,你从数据库读出一个DataTable,按照要求,你需要为用户提供多种显示方案,如按Table方式显示时,Table不同行、列用不同格式显示。
1、最笨的方法,为每种显示方式做一个页面。
这种方式优点是运行效率是最高的,就对一个页面的维护来说,因逻辑简单,所以维护时逻辑也较简单;
这种方式缺点是有多少显示方案,你就要为每种方案做一套页面,另外维护时虽然逻辑简单,但可能工作量较大。
2、采用较灵活方式,设计一个配置文件,根据配置文件,动态生成页面。
这种方式的优点是灵活性强,逻辑也不太复杂;
这种方式的缺点,是运行效率不高,比如,如果要求每列采用不同格式,那么你在生成表格时,每生成一列,都要读一次配置文件信息,然后据该列配置文件来生成单元格。
3、将DataTable转换成xml,而不同样式方案,则采用不同xslt进行转换。
这种方式的优点,是数据与样式的分离,速度我没测试过,想来大概跟上面第二种情况差不多,或略优。
缺点是对开发人员要求较严,必须熟悉xslt语法,另外速度也不是最佳。
4、采用动态方法,程序根据配置信息创建动态方法,可以 以显示方式 作为键,将动态方法生成的 代理 保存在哈希表中,每次根据不同要求,从哈希表取出不同代理执行相应的动态方法。
采用这种方式,需要设计一个好的配置文件,动态方法根据配置文件在运行时生成。
这种方式的优点是效率高,应与第一种持平,另外在扩展性也不错。
这种方式的缺点,是要求开发和维护人员熟悉这种开发模式,相对于其他方式开发,发出动态方法的代码也较难读懂,较难维护。
总的来说,我认为发出动态方法这种开发模式,是一个优秀开发人员应掌握的,这种方式,在对业务充分抽象的基础上,可设计出重用性相当高的代码,且运行效率也更是没得说。