簡體   English   中英

這是什么樣的模式('提供者')?

[英]What kind of pattern is this ('Provider')?

在工作中,我們使用的是一種我在GoF書中沒有找到的“模式”(但這可能是由於在這個問題上缺乏能力,我只是略去了模式)而且我仍然在懷疑。

比方說,如果我們有一個包含項目DataAccess的多項目解決方案,那么管理數據訪問。 然后通常我看到它有這樣的結構:

Providers (Folder)
 - DataAccessProvider.cs

Interfaces (Folder)
 - IFileLoader.cs

Implementors (Folder)
 - FileLoader.cs

這里, FileLoader將是IFileLoader接口的internal實現,提供者看起來像這樣:

public static class DataAccessProvider
{
  public static IFileLoader FileLoader
  {
    get { return new FileLoader(); }
  }
}

這是什么樣的設計模式(如果有的話),除了屏蔽IFileLoader接口的具體實現之外,它的真正用途是什么?

其次,這真的是“好風格”嗎? 我想知道,例如,如果有很多電話會發生什么

string content = DataAccessProvider.FileLoader.LoadContentFromFile("abc.txt");

無論何時使用,都會調用new FileLoader() 是不是有更優雅的方式來做類似的方法?

在此示例中, DataAccessProvider是簡單工廠方法(模式)的示例。 通常你會有一個名為GetFileLoader()CreateFileLoader()而不是Property版本,但結果是一樣的。

返回IFileProvider而不是FileProvider的目的是用於依賴性反轉,這樣就可以編寫其他類型的FileProvider並將它們注入應用程序,而無需返工或重新編譯依賴於IFileProvider所有對象。 這不是掩蔽。

如果關注創建了多少個FileLoader實例,那么可以使用該對象的Singleton模式。 但是,如果FileLoader是一個輕量級對象,這通常不是問題,因為CLR垃圾收集器會自動為您處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM