|
|
最初由 yining 发布
[B]
我认为设计模式有三个层次,最高的层次是框架模式,比如MVC,Layered,pipeline等等,框架模式决定了整个程序的总体结构;然后是细节的设计模式,经典的代表就是四人帮的23个模式,这些模式的应用在具体的细节设计,给程序员提供了更灵活更有弹性的程序结构,方便了以后的更改;最后是编码的模式,比如double-checked locking等等,这些模式往往和具体的编程语言相关,解决的是实际编程中的一个具体的技术问题,而不是结构问题。
菲猫的“系统功能设计”是啥意思? [/B]
恩, 偶是这样考虑的, 举个例子说, 如果要开发一个想ITPUB这样的BBS系统, 首先, 要提出关于这个系统功能的一个外部设计, 也就是说, 根据需求提出一个系统的概念性的设计, 比如, 使用INTERNET, 有不同管理角色, 不同的角色可以拥有不同的处理权限, BBS的内容要分版块, 版块之间的处理相互独立等等, 这就是偶说的偶说的系统功能设计
然后, 在这个基础上做概要设计, 决定大的系统功能模块, 和共通的处理框架, 比如说, 出于负荷分担的目的, 要使用多个DB, 每个DB完成一个版块的功能, 还要有一个系统管理DB, 负责协调各个DB的功能, 更具体地说, ITPUB的首页信息保存在系统管理DB中, 而进入到某一版块后有该版块所在DB进行处理, 这样一来, 对DB ACCESS方法, 和事物管理等等就有了特殊要求, 这些要求应写入概要设计, 并作为系统框架的设计依据
比如偶们决定把系统框架分为BOUNDARY层处理(画面输入和输出的处理), 和BUSINESS层处理(系统逻辑), 这样在BOUNDARY层和BUSINESS层之间就需要有API来保证两部分机能的连接, 于是偶们可以设计一套INTERFACE, 由于偶们对数据库连接方法有特殊要求, 因此考虑设计一套抽象类(把共通处理固化在里面), 以保证连接要求的实装, 这样看很容易决定哪些功能应该通过INTERFACE实现, 哪些功能应该通过ABSTRACT实现, 在比如, 对于象LOG管理这样系统级别的处理, 应该使用STATIC方法等等等等
可是, 联系到设计模式, 就很难想象, 各个模式的实际意义(不是说他们在实装上的效果)比如, 使用FACTORY模式是否能满足偶们对事物处理的要求等等
另外, 偶认为单纯从实装的角度上应用设计模式, 虽然, 能够简化代码编写的工作量,但为测试和系统运用带来了不少困难(比如单体测试的测试用例如何确定才能发现FRAMEWORK中的问题), 盲目使用设计模式应该是弊多利少 |
|