いつものようにそれは依存します..
データの責任はプロバイダーにあります。前述の「fileExporter」はファイルをエクスポートします。データ プロバイダーが封印されている場合は、明らかにデータをアサートするバリデーターを作成し、その後、アサートされたデータがファイル エクスポーターに渡されます。
封印されていない場合は、依存関係を注入できます。
すなわち
class DataProvider(IDataValidator dataValidator, IFileFormat fileFormat){...}
interface IFileFormat { void Export();}
interface IDataValidator { void AsserData(); }
class CSVDataValidator : IDataValidator{...}
class CSVFileExporter : IFileExporter {..}
var dataValidator = new CSVDataValidator();
var iFileFormat = new CSVFileFormat();
var dataProvider = new DataProvider(dataValidator, fileFormat);
var data = dataProvider.Data;
var csvFileExporter = new CSVFileExporter(data)
csvFileExporter.Export();
基本的に可能性は無限です。それは、何を閉じたいか、何を将来拡張したいかによって異なります。
私は戦略/依存性注入/オープンクローズ原則を読みます