天天看點

【愚公系列】2021年12月 通用職責配置設定原則(七)-純虛構原則(Pure Fabrication Principle)

文章目錄

前言

一、純虛構原則(Pure Fabrication Principle)

二、使用步驟

示例

GRASP:General Responsibility Assignment Software Patterns 通用職責配置設定軟體模式。

首先我們先來區分下GRASP與GOF模式的差別,它們主要在什麼時候用,用來做什麼。在軟體開發過程中,我們常說面向對象開發,面向對象思想應該貫穿整個軟體開發生命周期。我們在将現實世界中的業務對象及業務功能抽象成軟體系統中的系統對象過程中應該遵循使用GRASP模式。而在具體技術實作上應該遵循使用GOF設計模式,來實作系統功能。即GRASP主要使用在分析設計階段,與具體技術無關;而GOF模式主要使用在開發階段,與具體技術相關,它是對GRASP設計成果進行實作時而使用,是一種開發階段的設計模式。

GRASP軟體設計模式包括9個模式:建立者、資訊專家、低耦合、控制器、高内聚、多态性、純虛構、間接性、防止變異。

提示:以下是本篇文章正文内容,下面案例可供參考

(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#設計模式 系列博文中結構型模式下的擴充卡模式中找到。