そのため、2 つのホテル カタログをマッピングするというタスクがあります。どちらも csv ファイルです。それぞれの責任に基づいて、次の 2 つのクラスを作成しました。 1. CatalogManager : カタログの I/O 操作を処理します。2. CatalogMapper : 2 つのカタログのマッピング タスクを処理します。
定義は次のとおりです。
public static class CatalogManager
{
public static List<Hotel> GetHotels(string filePath) { }
public static void SaveHotels (List<Hotel> hotels, string filePath) { }
public static void SaveMappedHotels (List<MappedHotel> hotels, string filePath) { }
public static List<string> GetHotelChains(string filePath) { }
}
public static class CatalogMapper
{
public static List<MappedHotel> MapCatalogs (List<Hotel> masterCatalog, List<Hotel> targetCatalog) { }
public static FetchAddressGeoCodes (Hotel.Address address)
{ // fetch address's geocode using Google Maps API }
public static string GetRelevantHotelChain (string hotelName)
{
List<string> chains = CatalogManager.GetChains();
// find and return the chain corresponding to hotelName.
}
}
典型的なマッピング操作は次のようになります。
List<Hotel> masterCatalog = CatalogManager.GetHotels(masterFilePath);
List<Hotel> targetCatalog = CatalogManager.GetHotels(targetFilePath);
List<MappedHotel> mappedHotels = CatalogMapper.MapHotels(masterCatalog, targetCatalog);
CatalogManager.SaveMappedHotels(mappedHotels, mappedCatalogFilePath);
コードが示すように、両方のクラスは静的です。それらが正しく機能していることはわかりましたが、OOP に関しては、この設計にはまだ何か問題があると感じています。両方のクラスが単純に静的であっても問題ありませんか? それらをインスタンス化する必要はありませんでした。また、この設計の他の欠陥は何ですか? 欠陥が存在することは確かです。それらの解決策は何ですか?