2016-05-13 40 views
1

我最近有一個關於String Object with fixed length C#的問題。 (請先閱讀這個問題有沒有「數據轉換對象」原理/模式?

一些給出的答案指出,我的設計可能有缺陷。

由於最後一個問題是關於字符串具有固定長度這一個是關於底層原理。這個問題可能會有點長,所以請認真對待我。

要求

我有在它與指定的固定長度值的文本文件平原。這個文本文件的標準是從90年代開始的。我必須創建這樣一個文件。

  1. 一個文件可能包含1-60行。
  2. 有10種不同類型的行。
  3. 一行具有10-40個值。

行被指定這樣的:

Specs Table

早在上世紀90年代有其創建這些文件放在這一個服務器,然後服務器讀取文件,並做了一些與應用它喜歡它寫入數據庫或通知某人某事出了錯等

enter image description here

此應用程序由於最近的法律變化而不再可用。

建議設計

新的應用程序,在它的位置在出口的形式不提供任何數據,但是它裏面的值的數據庫。我有責任寫一個轉換器。所以我必須獲取數據並編寫一個導出的文本文件。數據只發送,從未收到!

enter image description here

問題

由於一個DTO的唯一目的是轉移狀態,應該沒有問題(POCO vs DTO) 有什麼樣,其目的是「數據轉換對象」轉換傳輸的數據?有沒有適用的設計模式?

+0

有一種模式可以執行此類數據轉換操作:[Extract Transform Load(ETL)](https://en.wikipedia.org/wiki/Extract,_transform,_load)。還有什麼,你會超越它。 – 2016-05-13 10:10:33

+0

您仍然可以擁有具有行爲的DTO。我不會嘗試鎖定某種特定的方法或模式,只是做一些有用的事情然後再進行細化 –

+0

看起來像一件大事,但問題確實很小,而且過於複雜。您在導出期間所需的全部內容都是在數據可以導出或不導出時驗證數據。沒有其他的。沒有額外的抽象。使用某些屬性自動驗證是好的,但「數據轉換對象」?它只是一種接收一種類型併產生另一種類型的方法,當然,將它放入另一個類中(通過將這種方法放在其中一種類型中來耦合類型是沒有意義的),但僅此而已。另一個問題是,只要有意義開始使用特殊類型來保存基本類型... – Sinatr

回答

0

我最近爲類似問題設計了一個解決方案,雖然我的解決方案是採用SAS語言,而不是面向對象的。但是,對我來說,這個問題似乎很相似。現在,讓我們剖析問題:

問題:

  1. 有一些純文本文件。
  2. 這些文件有規範,有關佈局,字段,類型等。
  3. 這些文件需要轉換成其他格式。

解決方案(面向對象): 我將定義三個類:PlainTextFile,Specification,Output和Reader Class。

規範:承包商需要一個規範(可能它存儲在一個文件中),並將其解析爲一個Specification對象。

PlainTextFile:這可以是文本文件的句柄,也可以是句柄周圍的包裝,如果添加了其他功能。我更喜歡第二種選擇。

輸出:這是您希望產生的輸出。

閱讀器:它需要兩個輸入,PlainTextFile和Specification。使用Specification來讀取和分析PlainTextFile並將輸出寫入Output對象/格式。

現在,輸出可以是最後一步或沒有。我建議,讀者只做這麼多。它要將輸出寫入數據庫,或者將其發送到某個地方,創建另一個類來執行此操作。

記住,我不知道這個模式的名字是什麼。其實,我覺得這不重要。對我來說,這種方法解決了公司十年來存在的一個問題,它集成了兩個最常用的系統。

相關問題