首页 > 编程知识 正文

德育过程的基本原则,面向对象设计方法的概念

时间:2023-05-03 22:37:50 阅读:111244 作者:3718

GRASP,职责分配软件模型,generalresponsibilityassignmentsoftwarepatterns,】是面向对象设计和职责分配中的9个基本原则,jzdhk1997年的applyterns

GRASP中提到的模型和原则包括控制器、作者、中间人、信息专家、低耦合性和高内聚性,这些模型解决了一些软件开发问题。 这些技巧并不是为了创造新的工作方法,而是在面向对象的设计中,为了古老且经过测试的编程方法而制作文档并使其标准化而发明的。

jzdhk表示:“软件开发最重要的设计工具不是UML和其他技术,而是明确设计原则的心智。” [3]:272。 因此,GRASP原则是一套心理层面的工具,是面向对象软件设计学习上的辅助工具。

在模式面向对象设计中,设计模式是一种命名的描述问题及其解决方法,可以应用于各种方案。 理想的设计模式使程序开发人员能够了解如何将解决方案应用于各种环境并进行取舍。 在某些特定类型的问题中,许多模式提供了对象角色分配的指导方针。

信息专家向目标分配责任的基本原则是什么?

解决方案:找到履行职责所需的信息,并将责任分配给拥有该信息的人。

信息专家(Information expert )是确定如何分配角色(方法、字段等)的原则。

应用信息专家原则时,对于特定的职责,一般会确认实现该职责所需的信息以及信息所在的对象。

这会将角色分配给有关角色信息最多的对象。

作者请参照“工厂方法”

的创建是面向对象系统中常见的活动之一。 因此,您需要确定哪些类别负责创建对象。

问:哪个类别用于创建对象a?

解决方案:一般来说,如果类别b满足以下一个或多个条件,则必须负责创建对象a :

b例子包括a的例子或合成聚合a的例子

b的实例记录a的实例

b的实例密切使用a的实例

在b的实例中,有在a的实例初始化时的信息,在对象创建时传递到a的实例[3]:16:16.7

相关模式或原则:低结合性,工厂方法

在控制器模式下,将处理系统对象的角色分配给表示整个系统或用例场景的非用户界面类别。 控制器对象是非用户界面,是负责接收或处理系统事件的对象。

问:哪个对象处理输入系统事件?

解决方案:用例控制器必须处理用例的所有系统事件。 也可以在多个用例中使用。 例如,“创建用户”或“删除用户”用例可以在称为UserController的同一类别中使用,而不是在两个不同的用例控制器中使用。

控制器被定义为用户界面后接收和处理系统行为的第一个对象。 控制器必须将其他对象所需的工作赋予相应的对象。 控制器调整或控制相关活动。 在信息系统逻辑架构的面向对象系统中,如果APP应用程序在APP应用层/服务层和业务逻辑之间存在明显的隔离,则GRASP控制器可以被视为APP应用层或服务层的一部分。

相关模式或原则:指挥模式、外观模式、图层、纯虚构。

中介(indirection )模式支持低结合性,在两个对象之间将其作用分配给中介对象,因此可以复用。 例如,在模型-视图控制模式下,可以在数据(模型)及其实现(视图)之间导入控制器部件。 这将降低两个组件之间的耦合性。

问题:多个对象之间需要如何分配责任以避免联接? 如何取消合并对象以支持较低的合并度并保持较高的可重用性?

解决方案:将责任分配给两个或多个组件之间的中介对象或服务,以避免组件之间直接耦合

低结合性主条目:松散结合

绑定是指评估一个组件链接到另一个组件,是否知道另一个组件或依赖于另一个组件。 松散耦合为以下优点分配责任的评价模型。

类别之间的依赖性低

一个类别的变更对另一个类别的影响很小

再利用的可能性高

高聚集性(high cohesion )是使对象能够恰当地聚焦、管理、理解的评价模型。 高聚集性常常被用来支持低结合性。 高内聚性是指特定组件的多个作用相互密切相关、聚焦。 将程序分解为类别和子系统是提高系统凝聚性的一种方法。 相比之下,低聚集性意味着与特定组件无关的角色过多。 不太凝聚的组件往往难以理解、重用、维护和修改。

多态性主要:多态性(计算机科学) )。

根据多态性(polymorphism )原则,按类型改变行为的责任在于发生改变的类型。 这可以用多态算子来实现。 这种类型的用户必须使用多态性运算符。

问题:如何应对不同类型的变化? 如何为可可插件生成软件组件?

解决方案:如果行为取决于类型(类别),请使用多态运算符将此责任分配给类型发生变化的类型。 (多态性有很多定义,但这里的定义是“为不同对象上的服务赋予相同的名称”)。

保护的变化请参照“开关”

原则
保护变化(protected variations)模式保护组件,不受其他组件(对象、系统、子系统)变化的影响,作法是将具焦在不稳定部分的程序包裹在接口内,利用多态来产生此一接口的不同实现。

问题: 如何设计对象、子系统和系统,让组件的变化或不稳定性不会对其他组件有不好的影响?
解决方案:识别预期到的变异或不稳定性,指定职责在其周围产生稳定的接口。

纯虚构

纯虚构(pure fabrication)是指没有实现问题领域概念的类别,特别是为了实现派生类低耦合性、高内聚性、高复用的潜力(若是用信息专家的解决方案,无法达到此一效果)。这类类别在领域驱动设计中会称为服务。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。