''设计模式精解P136,第11章:专家如何进行设计''
Alexander提到:''从片段开始设计不是一个好的设计方法。即将预先成型的部分添加在一起是无法得到优秀的软件设计的。''(但还是可以得到可以工作的软件的,只是大部分时候难于修改或扩展)
''我的观点:''
软件或者软件系统都是由''功能模块''和这些''模块之间的联系''组成的。模块包括''通用模块''和''业务模块'',通用模块一般都是已经存在的,甚至一些业务模块都有现成的可供使用。(''模块是容易获得的'')
在传统的设计方法中,关注的焦点都集中在功能模块上,往往认为只要组成系统的功能模块都开发完成,则软件或者系统就已经完成了。这种做法忽视了更重要的另一个组成部分:''模块之间的联系。(模块间的联系是不容易设计的)''
忽视模块之间的联系造成的恶果之一就是系统''脆弱''和''难于修改''。
传统的软件设计:凑齐所需的功能模块,然后组装在一起,能正常工作即可。
用模式的方法思考的软件设计:自顶向下的设计,关注软件模块间的联系,并采用迭代的方式,从小和简单的系统开始,逐渐设计处复杂的系统。在此过程中,不断有模块加进来以扩充系统的功能,设计的重点不是模块的功能,而是模块之间的联系,以保证系统内模块间的联系一直保持坚固而灵活,不会随着模块的增多而变得混乱。
保持模块间的联系坚固而灵活,这正是设计模式要做的事情。
当软件规模较小的时候,功能是重点,功能模块的开发是工作的中心。而且小规模的软件模块较少,之间的联系也少,自然不需要过多的关注。
随着用户需求的增加,软件规模也来越大,其中的模块也越来越多,而且多年的开发,现成的模块比较容易获得,需要自己开发的功能模块并不多。这时设计的重点要转移到模块间的联系上来,糟糕的模块间的联系会导致脆弱和难于修改的系统,也不容易扩展系统的功能。......
Alexander提到:''从片段开始设计不是一个好的设计方法。即将预先成型的部分添加在一起是无法得到优秀的软件设计的。''(但还是可以得到可以工作的软件的,只是大部分时候难于修改或扩展)
''我的观点:''
软件或者软件系统都是由''功能模块''和这些''模块之间的联系''组成的。模块包括''通用模块''和''业务模块'',通用模块一般都是已经存在的,甚至一些业务模块都有现成的可供使用。(''模块是容易获得的'')
在传统的设计方法中,关注的焦点都集中在功能模块上,往往认为只要组成系统的功能模块都开发完成,则软件或者系统就已经完成了。这种做法忽视了更重要的另一个组成部分:''模块之间的联系。(模块间的联系是不容易设计的)''
忽视模块之间的联系造成的恶果之一就是系统''脆弱''和''难于修改''。
传统的软件设计:凑齐所需的功能模块,然后组装在一起,能正常工作即可。
用模式的方法思考的软件设计:自顶向下的设计,关注软件模块间的联系,并采用迭代的方式,从小和简单的系统开始,逐渐设计处复杂的系统。在此过程中,不断有模块加进来以扩充系统的功能,设计的重点不是模块的功能,而是模块之间的联系,以保证系统内模块间的联系一直保持坚固而灵活,不会随着模块的增多而变得混乱。
保持模块间的联系坚固而灵活,这正是设计模式要做的事情。
当软件规模较小的时候,功能是重点,功能模块的开发是工作的中心。而且小规模的软件模块较少,之间的联系也少,自然不需要过多的关注。
随着用户需求的增加,软件规模也来越大,其中的模块也越来越多,而且多年的开发,现成的模块比较容易获得,需要自己开发的功能模块并不多。这时设计的重点要转移到模块间的联系上来,糟糕的模块间的联系会导致脆弱和难于修改的系统,也不容易扩展系统的功能。......