`
flysnail
  • 浏览: 92881 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

通用职责分配模式的其中的3模式

阅读更多
通用职责分配模式(GRASP)一共有9个模式,下面是其中的3个模式:
创建者模式:
创建对象是面向对象系统中最常见的活动之一,因此应该有一些通用的原则以用于创建职责的分配,如果分配的好,设计就能够支持低耦合,提高清晰度,封装性和可复用性。
如果下列条件之一为真,将创建类A的实例的职责分配给类B:
a.B包含或组成聚集A
b.B记录A
c.B直接使用A
d.B具有A的初始化数据,并且在创建A时会将这些数据传递A。因此对于A的创建而言,B是专家。
e.B是对象A的创建者
如果有一个以上的选项适用,通常首选聚集或包含A的类B。
创建者模式指导我们分配那些与创建对象有关的职责。基本意图是寻找在任何情况下都与被创建对象具有连接的创建者。创建者模式建议,封装的容器或记录是创建其所容纳或记录的事物的很好的候选者。
对象的创建者常常具有相当的复杂性,例如为了性能而使用回收的实例,基于某些外部特性值有条件的创建一个或一族类的实例。在这些情况下,最好的办法是把创建职责委派给称为具体工厂或抽象工厂的辅助类,而不是使用创建者模式所建议的类。
信息专家模式
信息专家经常用于职责分配,这是对象设计中不断使用的基本原则。专家并不意味着模糊或奇特的想法,它表达一种直觉,即对象完成与其所具有的信息相关的职责。
注意,完成职责往往需要分布在不同对象中的信息。这意味着许多局部的信息专家要通过协作来完成任务。
信息专家模式是对真实世界的模拟。我们一般把职责分配给那些具有完成任务所必需的信息的个体。
在某些情况下,专家模式建议的方案也许并不合适,通常这是由于耦合与内聚问题所产生的。
我们可以用设计要分离主要的系统关注来改善设计中的耦合和内聚。该模式通常支持高内聚。
低耦合模式
耦合是对某元素与其他元素之间的连接、感知和依赖程度的度量。具有低耦合的元素不会过度依赖于其他元素;“过度”是与语境相关的,但我们必须对此进行检查。这些元素包括类、子系统、系统等。
具有高耦合的类依赖于许多其他的类,这样的类或许不是我们所需要的,有些类会遇到以下问题:
a.由于相关类的变化而导致本体的被迫变化
b.难以单独理解
c.由于使用高耦合类时需要它所依赖的类,因此很难重用。
低耦合是在制定设计决策期间必须牢记的原则,它是应该不断的考虑的基本目标。
在C++ JAVA 和C#这样的面向对象语言中,从TypeX到TypeY耦合的常见形式包括:
a. TypeX具有引用TypeY的实例或TypeY自身的属性
b. TypeX对象条用TypeY的对象服务。
c. TypeX具有以任何形式引用TypeY的实例或TypeYT自身的方法。通常包括类型TypeY的参数或局部对象,或者由消息返回的对象是TypeY的实例。
d. TypeX是TypeY的直接或间接子类
e. TypeY是接口,而TypeX是此接口的实现。
低耦合提倡职责分配要避免产生具有负面影响的高耦合。
低耦合支持在设计时降低类的依赖性,这样可以减少变化所带来的影响。低耦合不能脱离专家和高内聚等其他模式孤立的考虑,而应作为影响职责分配的原则之一。
子类与其超类之间有很强的耦合性。因为这是一种强耦合形式,所以要考虑涉及超类导出的任何决定。
没有绝对的度量标准来衡量耦合程度的高低,重要的是能够估测当前耦合的程度,并估计增加耦合是否导致问题,一般说来那些有着自然继承关系的类和复用程度较高的类,具有较低的耦合性。
低耦合的极端例子是类之间没有耦合。这个例子违反了对象技术的核心隐喻:系统由相互连接的对象构成。对象之间通过消息通信。耦合过低会产生不良的设计,其中会使用一些缺乏内聚性、膨胀、复杂的主动对象来完成所有工作,并且存在大量被动、零耦合的对象来充当简单的数据知识库。对象之间的适度耦合,对于创建面向对象系统来说是正常和必要的,其中的任务是通过被连接的对象之间的协作来完成的。

2
1
分享到:
评论

相关推荐

    设计模式:职责链模式

    总的来说,职责链模式是一种非常实用的设计模式,它提供了一种方式来组织和分配责任,使得系统在处理请求时具有更好的灵活性和可扩展性。在实际开发中,例如在事件驱动系统、消息传递系统以及命令模式的实现中,职责...

    24种设计模式以及混合设计模式

    如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、状态模式(State)、职责链...

    UML-GRASP模式简述

    2. 信息专家(Expert)模式:将职责分配给具有履行职责所需要的信息的类。 3. 低耦合(Low Coupling)模式:在分配一个职责时要保持低耦合度。 4. 高内聚(High Cohesion)模式:分配一个职责的时候要保持类的高聚合...

    java版本的设计模式的实现demo

    行为型模式则关注类或对象之间的交互和职责分配。 2. 单例模式 单例模式是最常见的创建型模式之一,它确保一个类只有一个实例,并提供全局访问点。在Java中,可以通过私有构造函数、静态私有变量和公共静态方法来实现...

    23种设计模式,创建型模式共5种,结构型模式7种,行为型模式11种

    **行为型模式**关注的是对象之间的交互和职责分配。共有十一种行为型模式: 1. **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些...

    软件设计模式(java版)习题答案.pdf

    * 行为型设计模式:用于描述对类或对象怎样交互和怎样分配职责。 设计模式的优点 1. 设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便...

    设计模式之美—学习笔记

    行为型模式关注对象之间的交互和职责分配。策略模式(Strategy)定义了一系列算法,并将每个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。模板方法模式(Template Method)定义了操作中的算法骨架...

    设计模式迷你手册最新

    3. **行为型模式**:这类模式涉及对象之间的交互和责任分配,如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式...

    设计模式 设计模式 设计模式 设计模式

    这类模式主要关注对象之间的交互和职责分配,帮助我们更好地控制程序的流程和行为。 例如,《设计模式》中文版这本书可能详细介绍了这些模式的定义、意图、结构、参与者、协作、效果、使用场景和实例代码。书中可能...

    设计模式 设计模式 思想 模式 原则

    除了上述的经典设计模式外,还有一个非常重要的概念叫做GRASP(General Responsibility Assignment Software Patterns),即通用职责分配软件模式。GRASP包含了九种模式,用于指导对象的设计和职责分配。GRASP模式在...

    深入浅出设计模式附书源码Java版源码

    3. **行为型模式**:这类模式关注对象之间的交互和职责分配,例如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、访问者模式(Visitor)、责任链模式...

    JAVA设计模式-chm版

    这类模式关注对象之间的职责分配和交互。包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、...

    设计模式期末试题下载

    - **行为型模式**:关注对象之间的职责分配,使对象能够更灵活地响应消息。包括策略模式、模板方法模式、观察者模式、命令模式、迭代子模式、访问者模式、中介者模式、备忘录模式、解释器模式、职责链模式、状态...

    深入浅出设计模式(HEAD_FIRST设计模式)电子书+java代码

    这些模式关注对象之间的交互和职责分配,如策略模式允许在运行时选择算法,观察者模式用于实现发布-订阅事件机制。 配合书中提供的Java代码,读者可以更好地理解每个模式的实际应用。这些代码示例清晰展示了设计...

    深入浅出设计模式(中文版)

    行为型模式关注对象之间的交互和责任分配,如策略模式、观察者模式和模板方法模式等,它们有助于提高代码的可复用性和可维护性。 本书通过Java语言实现的代码示例,让读者能够直观地理解每个模式的核心思想和应用...

    Java设计模式相关书籍

    行为型模式则关注对象间的通信和责任分配,如策略模式、观察者模式、职责链模式等。 2. **设计模式之禅** "设计模式之禅"这本书可能强调了设计模式的核心理念和实践方法,鼓励开发者追求代码的优雅与简洁。它可能...

    C语言设计模式.pdf

    创建型模式主要用于对象的创建过程,结构型模式涉及对象间接口的适应和组合,而行为型模式关注对象间的职责分配和通信。 本文件中提到了单件模式、工厂模式、抽象工厂模式、访问者模式、状态模式、命令模式、解释器...

    Head First 设计模式 源代码(完整)

    3. 行为型模式:关注对象之间的责任分配和交互,如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录...

    设计模式中文版

    3. 行为型模式:主要涉及对象间职责分配和通信,包括策略模式、模板方法模式、观察者模式、命令模式、迭代器模式、访问者模式、责任链模式、备忘录模式和解释器模式。这些模式有助于设计出灵活、可扩展的系统,使得...

    java设计模式 课件讲义

    行为型模式包括策略模式、模板方法模式、观察者模式、命令模式、迭代器模式、访问者模式、职责链模式、备忘录模式、解释器模式和状态模式,它们涉及对象之间的交互和职责分配。 "Java设计模式和源码"这门课程可能...

Global site tag (gtag.js) - Google Analytics