写点什么

【愚公系列】2022 年 06 月 通用职责分配原则 (七)- 纯虚构原则

作者:愚公搬代码
  • 2022 年 6 月 19 日
  • 本文字数:1093 字

    阅读完需:约 4 分钟

前言

GRASP:General Responsibility Assignment Software Patterns 通用职责分配软件模式。


首先我们先来区分下 GRASP 与 GOF 模式的区别,它们主要在什么时候用,用来做什么。在软件开发过程中,我们常说面向对象开发,面向对象思想应该贯穿整个软件开发生命周期。我们在将现实世界中的业务对象及业务功能抽象成软件系统中的系统对象过程中应该遵循使用 GRASP 模式。而在具体技术实现上应该遵循使用 GOF 设计模式,来实现系统功能。即 GRASP 主要使用在分析设计阶段,与具体技术无关;而 GOF 模式主要使用在开发阶段,与具体技术相关,它是对 GRASP 设计成果进行实现时而使用,是一种开发阶段的设计模式。


GRASP 软件设计模式包括 9 个模式:创建者、信息专家、低耦合、控制器、高内聚、多态性、纯虚构、间接性、防止变异。


<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">


<font color=#999AAA >提示:以下是本篇文章正文内容,下面案例可供参考

一、纯虚构原则(Pure Fabrication Principle)

(1)问题


当不想破坏高内聚和低耦合的设计原则时,谁来负责处理这种情况?


(2)方案


将一组高内聚的职责分配给一个虚构的或处理方便的“行为”类,它并不是问题域中的概念,而是虚构的事务,以达到支持高内聚、低耦合和重用的目的。


(3)分析


纯虚构模式用于解决高内聚和低耦合之间的矛盾,它要求将一部分类的职责转移到纯虚构类中,在理想情况下,分配给这种虚构类的职责是为了达到高内聚和低耦合的目的。在实际操作过程中,纯虚构有很多种实现方式,例如将数据库操作的方法从数据库实体类中剥离出来,形成专门的数据访问类,通过对类的分解来实现类的重用,新增加的数据访问类对应于数据持久化存储,它不是问题域中的概念,而是软件开发者为了处理方便而产生的虚构概念。纯虚构可以消除由于信息专家模式带来的低内聚和高耦合的坏设计,得到一个具有更好重用性的设计。在系统中引入抽象类或接口来提高系统的扩展性也可以认为是纯虚构模式的一种应用。纯虚构模式通常基于相关功能的划分,是一种以功能为中心的对象或行为对象。在很多设计模式中都体现了纯虚构模式,例如适配器模式、策略模式等等。

二、使用步骤

示例

public class MobileAdapter : Appliance, ITarget {
public Voltage GetMobileVoltage() { var voltage = GetVoltage(); Console.WriteLine($"Appliance voltage is {voltage.Value}V!");
voltage.Value = 3; Console.WriteLine($"After adapted,it becomes {voltage.Value}V!");
return voltage; }
}
复制代码


以上代码可在我的 C#设计模式 系列博文中结构型模式下的适配器模式中找到。

发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2022.03.01 加入

该博客包括:.NET、Java、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、python、大数据等相关使用及进阶知识。查看博客过程中,如有任何问题,皆可随时沟通。

评论

发布
暂无评论
【愚公系列】2022年06月 通用职责分配原则(七)-纯虚构原则_6月月更_愚公搬代码_InfoQ写作社区