mercredi 6 mai 2015

Package-by-layer versus package-by-feature

I know this has several associated posts, but I have some specific questions which I am hoping I can get help with. Sorry if they are very basic..

Here is a sample problem - very simplified, but you get the picture - I have several objects, which have some common function e.g. departments in a pharmaceutical company - neurology, oncology, infection etc. They all need to parse patient document files, and upload data to the database. Of course the nature of the data is slightly different for each department. If I used package-by-feature, I would have

com.company.neurology
      Neurology.java
      NeurologyDocument.java
      NeurologyDAO.java

com.company.infection
      Infection.java
      InfectionDocument.java
      InfectionDAO.java

etc. The problem is that I need an abstract class that the Document classes need to extend e.g.

AbstractDocument.java
public class AbstractDocument
{
      public void validateDocument(){...}
      public void readDocumentHeader(){...}
      public void readDocumentFooter(){...}
       ...
}

Some data access files e.g.

DBConnection.java
    public class DBConnection
    {
        public void makeConnectionToDB() {... }
        public void createCache() {... }
        public void closeConnectionToDB() {... }
    }

some error classes

ParseError.java, PatientNotFoundException etc.

If packages are by feature, where do these common classes/interfaces go?

Aucun commentaire:

Enregistrer un commentaire