GRASP模式读书总结

 这个模式出自《UML和模式应用》,GRASP是General Responsibility Assignment Software Pattern(通用责任分配软件模式)的缩写,在这本书里面在分析系统阶段主要是建立概念模型,概念模型是从真实世界转换到计算机世界的过渡模型,根据用户的需求,如果是在XP里面抽取出Use Story里面的名词,在RUP里面抽取出Use Case里面的名词根据一定的原则来建立相应的类,这些类只是记录一些属性信息和关联信息。到了设计阶段,有了概念模型之后,然后根据基于职责设计类,即RDD(职责驱动开发),RDD是思考OO软件设计的一般性隐喻,把软件对象想象成具有某种职责的人,他要与其他人协作以完成工作。RDD使我们把OO设计看作是有职责对象进行协作的共同体,基于这种思想作者提出了GRASP分配职责的几个原则。GRASP模式可以用来设计类,这个模式包括9个基本原则:创建者、信息专家、低耦合、控制器、高内聚、多态性、纯虚构、间接性、防止变异。个人觉得最比较具体的是专家模式,就是根据自身数据资源也就是属性来分配给该类相应的职责(方法)。还有一个GoF设计模式,个人觉得GRASP比GoF层次要高些,先采用GRASP模式指导怎么分配类的职责,如何分配,从而来设计各个类,解决类之间如何交互, 如何设计合理的问题,与具体的问题无关,而GoF是解决具体的某个问题的,比如GRASP有个创建者模式,GoF也有,GRASP模式指导该由谁来创建,即职责分配给谁,怎么分配,而GoF指导解决具体问题中的怎样创建问题,使用工厂模式,Build模式等等。在国内讨论GRASP模式比较少,GoF比较多,看了这方面的文章后觉得对面向对象方面的思考更深了一步。另外Martin Fowler的三层视角理论:概念视角,规约视角,实现视角我也觉得很不错,有很强的概括性。这些都教我如何和怎样采用面向对象来思考问题,虽然在具体的项目中无法建立很多的UML图,但是可以形成相应的概念,在大脑里面使用这些概念对整个系统走一遍分析,设计的过程,从来设计出真正的面向对象软件,而不是仅仅使用了面向对象语言的软件。

你可能感兴趣的:(设计模式,OO,读书,Build,语言,UML)