[英]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.