mercredi 27 avril 2016

dynamic business document creation

I am preparing a C#.Net project for our company and would like to know which design pattern is the best fit for creating all those business documents. I have studied some of the available design patterns, to be honest I have problems in applying them to my real world problem, to get concrete here my scenario: Different types of documents have to be created, read into and maintained through windows forms and finally stored back to a database , like e.g. invoices(sales and purchase), contracts(sales and purchase), bill of lading, letter of credit, various inventory and warehouse documents, maybe later a bunch of accounting documents. In the first place I thought factory method would do the job but I am not sure if it is the right choice for this task. I guess it is the best approach to have a abstract class called "Document" with all the common fields (like docId, docDate, docNumber, docIssuer,etc.) as my base and then dive into the concrete creation of the desired document object. What options are there? In case of factories: do I need to define a concrete class for each and every document and create the object(which would be simple inheritance, wouldn't it?) or how should a factory approach look like in regard to my problem? Isn't it better to define each and every document spec (which finally would be like each and every database table field) as an own class and using builder pattern or composite pattern to assemble the desired document at runtime? Or are there any other approaches available? I wonder that many business-related programs have to make this decision but I could not find any prior questions on StackOverflow for this rather common issue.

As said before we are in planning phase and this issue may be considered a crucial pillar of the architecture, therefore any constructive advise would be highly appreciated.

1 commentaire:

  1. Hi!, I'm on the same boat here, have you had found the answer to your question? If so, would you please share your solution, as I said, I'm going through the same problem here and I would gladly know what your solution was.
    Best regards.

    RépondreSupprimer