老调重弹--面向对象设计原则--GRASP设计原则

GRASP概述

GRASP,全称General Responsibility Assignment Software Patterns,译为”通用职责分配软件原则“,包含以下原则和模式

控制器(Controller)

控制器模式用来接收和处理系统事件的职责,一般应该分配给一个能够代表整个系统或者单个用例场景

  • 一个用例控制器应该用来处理一个用例的所有系统事件
  • 控制器对象定义为UI展现层之上的第一个对象负责接收和协调系统操作
  • 控制器本身不应该包含太多逻辑和功能
  • 在N-Layer多层架构应用程序中,控制器一般处于Application和Service层之间
  • 参见:MVC模式

创建者(Creator)

对象的创建是面向对象系统中非常通用的行为,一般情况下,符合以下条件,都由B创建A,B是A的创建者:

  • B是A的聚合
  • B是A的容器
  • B记录了A的实例
  • B频繁密切使用A的实例
  • B持有初始化A的信息

高内聚(High Cohesion)

高度封装用来支持对象的可管理性、可读性和重用性,功能相关的职责放在一个类里,共同完成有限的功能

  • 高内聚通常用来支持低耦合
  • 可管理
  • 可理解
  • 可重用
  • 职责单一,方便扩展

间接(Indirection)

间接模式通过在两个元素中间分配一个中介者对象来支持松散耦合(无直接依赖关系),比如MVC中的“C”

信息专家(Information Expert)

信息专家(也叫专家模式)用来决定在哪里委托职责,这些职责包含方法、计算域等等

  • 某个类拥有完成某个职责所需要的所有信息,那么这个职责就应该分配给这个类来实现
  • 专家模式用来分配职责,根据给定的职责去查询和存储信息

松散耦合(Low Coupling)

松耦合作为评估系统设计的一种原则,职责体现在:

  • 降低类与类之间的依赖
  • 改变一个类对其他类的影响降至最低
  • 更高的重用性

多态(Polymorphism)

在继承系统中,使用设计时相同的定义在运行时产生不同的调用

受保护的变更(Protected Variations)

该模式通过防止外部系统(对象,系统,子系统)修改元素来得到包含元素防止变更的目的

  • 使用接口包装不稳定易变的元素
  • 为接口创建不同的实例,实现多态
  • 如果未来发生变化,扩展接口新的实现,不需要修改原有实现
  • 基本等同于OCP(开闭原则)

纯虚构(Pure Fabrication)

使用纯虚构来协调内聚和耦合,在一定程度上解决了系统对象交互之间的依赖性

时间: 2024-10-13 14:45:45

老调重弹--面向对象设计原则--GRASP设计原则的相关文章

面向对象编程6大设计原则:单一职责原则

单一职责原则(Single  Responsibility Principle)简称SRP原则. 定义 应该有且仅有一个原因引起类的变更. 优点 可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多: 提高类的可读性,提高系统的可维护性: 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响. 说明 单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则: 单一职责原则要根据项目的实际情

面向对象的七个设计原则

一.单一职责原则 一个类,最好只做一件事,只有一个引起它的变化.单一职责原则可以看做是低耦合.高内聚在面向对象原则上的引申, 将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因.职责过多,可能引起它变化的原因就越多,这将 导致职责依赖,相互之间就产生影响,从而大大损伤其内聚性和耦合度.通常意义下的单一职责,就是指只有一种单一 功能,不要为类实现过多的功能点,以保证实体只有一个引起它变化的原因.专注,是一个人优良的品质:同样的,单 一也是一个类的优良设计.交杂不清的职责将使得代码看起来特

面向对象编程的软件设计原则

在開始Android软件实际APP開始之前,我们须要对面向对象设计原则及设计模式做一个初步的了解.才干在以后的实战过程中,少走弯路.使我们的软件开发生涯感觉到快乐.轻松.好了,废话少说,咱们今天给大家一起探讨一下软OOP中的软件开发设计原则.这些东东都是OOP的设计精髓,他们蕴藏着前辈留下的产物.眼下.软件设计最基本原则有下面几种(总共同拥有11种):单一职责原则.开放封闭原则.依赖倒置原则.接口隔离原则和里氏替换(Liskov替换)原则 单一职责原则 就是一个类值做一件事情.引起它发生变化的仅

03-04面向对象设计原则_设计实验

设计实验 有 3 个开关:a b c 有 3 个电灯:x y z 要求实现: a 能控制 x b 能控制 x, y c 能 x 注意:1个灯泡可以被多个开关控制:1个开关可以同时控制多个灯泡 所谓"控制":当开关操作时,当前灯泡的状态发生翻转.亮->灭 或 灭->亮 import java.util.*; class Light { private boolean state; // 灯的状态.true: 亮 public String toString() { if(st

面向对象的七种设计原则

下面的截图:主要讲述了七种设计原则定名称,定义以及使用的频率. ? 原则一:(SRP:Single responsibility principle)单一职责原则又称单一功能原则 核心:解耦和增强内聚性(高内聚,低耦合) 描述: 类被修改的几率很大,因此应该专注于单一的功能.如果你把多个功能放在同一个类中,功能之间就形成了关联, 改变其中一个功能,有可能中止另一个功能,这时就需要新一轮的测试来避免可能出现的问题. 原则二:开闭原则(OCP:Open Closed Principle) 核心思想:

设计模式<面向对象的常用七大设计原则>

面向对象设计的目标之一在于支持可维护性复用,一方面需要实现设计方案或者源码的重用,另一方面要确保系统能够易于扩展和修改,具有较好的灵活性. 常用的设计原则有七个原则: 1.单一职责原则(single responsibility principle,SPR) 一个类只负责一个功能领域中的相应职责.(或者可以定义为:就一个类而言,只有一个原因能够引起它变换). 单一职责原则是实现高内聚.低耦合的指导方针,是最简单的也是最难运用的原则. class Chart { private String ty

OO设计原则 -- OO设计的原则及设计过程的全面总结

这部分增加一点自己的感想,OO设计原则下面讲述的很清晰;看完之后有点感想如果我们在实际开发当中能够把这些原则熟烂于心的话那我们的代码质量和个人能力会有很显著的提神.根据自己的实际经验看很多开发者在开发过程中很多基本的知识确实没有熟烂于心导致开发的时候只有基本的内容.我所在的项目就是代码接口各种乱,可读性和可维护性特别差:当然自己在开发的时候也都没有做到,在后面的工作中尽量避免 前面发表了5篇OO设计原则的文章,在这里我将这个5个原则如何在我们设计过程进行应用进行一下总结, 这是我通过阅读和学习很

写给自己看的小设计3 - 对象设计通用原则之核心原则

由于对象设计的核心是类,所以下面的原则也都基本都是讨论类的设计问题,其它类型的元素都比较简单,基本上也符合大多数这里列出的原则. 前面我们分析完了对象设计的基本原则,这里我将重新温习一下对象设计的核心原则 - SOLID原则.几乎所有的设计模式都可以看到这些原则的影子. 单一职责原则(SRP):做一个专一的人 单一职责原则的全称是Single Responsibility Principle,简称是SRP.SRP原则的定义很简单: 即不能存在多于一个导致类变更的原因.简单的说就是一个类只负责一项

六大设计原则--开闭原则

定义 software entities like classes, modules and functions should be open for extension but closed for modifications. 一个软件实体应该对扩展开放,对修改关闭. 什么是开闭原则 闭原则的定义已经非常明确告诉我们:软件实体应该对扩展开放,对修改关闭,其含义是说一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化.那什么又是软件实体呢?软实体包括以下部分: 项目或软件产品