分析设计的讨论:包图
因为昨天看了一下包,觉得好象是挺有用的,想讨论一下,主要是关于包图对设计的作用。
但是说到设计可能会扯的很远,可能说了半天也不知道说什么,如果大家能看到什么值得说一下的,欢迎大家都来说一下。
对于设计方面不是很内行,但是也想聊一下,
设计要考虑的问题是多方面的,重用逻辑、维护效率、不同环境、部署需要等,只能说针对不同层次的问题进行不同层次的设计。
针对设计思想的设计模式,针对构架层次的构架模式等,提供了我们学习和使用设计的途径。
设计,首先要了解要解决的问题,就是设计的来源。比如:
//==============
在系统分析设计中,uml中有一个包图,martin flowler在《uml 精粹》中说,他比较重视包之间的关系,使用包图来表示包、包之间的关系,
来达到一定设计。
包图,一些类组(也可以是其他的组,比如时序图等)。
比如:在以用例演化而来的逻辑中,在分析的时候,出于某种原因和目的,将一些类放置在包中,形成一些类组。
那么包之间有一定的依赖,怎么最小化依赖,就要用到设计,比如:提到的一个技巧,说使包的类只在包内部可见,如果外部要使用包中的东
西,那么在包中在创建一些虚构的类,提供统一的访问,所谓的外观模式。
有时候分析产生的包图,在设计时期要依据设计做一些调整,合并和产生新包(由此觉得分析和设计是没有界限的,或者说是迭代的)。
包的可见性、相互关系等的研究,决定了一个包,最终是形成了软件包?还是子系统等?。
在这里,包的依赖就是要解决的问题,可以说包图驱动了这个逻辑层次上设计。
从用例分析演化来的包图解决的应该只是是软件逻辑上的一些设计,其他应该还有许多方面。
//===============
套用模式可以实现重用,比如N层(三层)的套用,但是模式适用是有一定的范围的,就是环境。
大家都明白这个道理,但套用的时候就不一定想到这个道理了。
比如:
关于层设计的问题的帖子,好象一直是很多,net版问的关于N层(三层)的问题,分几种:
1.对三层的扩展,具体层怎么划分,在实际环境中是否合理,力图找出一种通用的、合理的结构。
2.层具体怎么实现,怎么提高效率。
3.不清楚层是怎么协作的,想通过别人的代码了解,但是不了解层的真正意图。
3情况,是在对层模式不是很清楚的情况下(我也不是太清楚),就直接来套用模式了,这种做法应该是不推荐的。
虽然现在的结构,有些是经过了实践,或者说是研究出来专门针对哪个环境使用,比如哪个公司推荐的构架,但是也不能说对这个构架不了解
,就直接研究构架内部的具体实现,这样也太快了。
上面乱七八糟说的话,其实要说的好象就是:
1.设计的层次很重要,不然就无的放矢,乱套了。
2.设计不是空想的设计,比如不知道包之间的依赖,也就不知道要设计什么了,不知道要解决什么问题了。推荐一下包。
3.模式的套用要依据环境,就算对于别人认为这个模式适合这个环境,你也是在这个环境下的,那么首先还是要去了解模式,然后在进研究实
现。
由于上面讲的确实乱,我真的不知道在说什么,大家尽管扯开去谈好了,欢迎来谈!