I have been studying Design Patterns and I am looking to implement them into my latest project.I am working on a Windows Service that regularly checks a database table for a new entry.Depending on the entry found, the service will perform a number of processes.Possible processes include:1) Generate report and send email with report attached2) Run query and log data to another table3) Send notification emailWhat design pattern is best suited? I have been considering the Factory Pattern.My design process so far...1) Create Interface2) Create Abstract class which implements the Interface3) Abstract Methods:- CheckTable()- GenerateReport()- SendEmail()4) Factory Design Pattern:- The client(windows service) asks the Factory for a new object (based of the database entry found)- The factory instantiates this and returns to the client- The client then calls the relevant methods to send email or run query.Does this look correct? Or am I making this more difficult than it is?Or should I be using the Observor Pattern?UPDATE:OK. I have taken your advice and looked for the simplest way of doing this. Is the below correct? I have created an Interface and then a class to implement this Interface.There could be a number of different reports/emails to generate. Should these be added as new methods in the Interface?Do I need an Abstract class?// interfaceinternal interface IJobs{    void SendEmail();    void PublishData();    void GenerateTestReport(string userID, DateTime period);}// concrete classpublic sealed class JobsFactory : IJobs{    #region SINGLETON    private static JobsFactory INSTANCE;    private JobsFactory() { }    public static JobsFactory GetInstance()    {        if (INSTANCE == null)        {            INSTANCE = new JobsFactory();        }        return INSTANCE;    }    #endregion    private readonly WorkbookFactory _workbookFactory = WorkbookFactory.GetInstance();    #region IJobs Members    public void SendEmail()    {        // send email    }    public void PublishData()    {        // publish data    }    public void GenerateTestReport(string userID, DateTime period)    {        string reportTestFilePath = this._workbookFactory.BuildTestReportWorkbook(userID, period);    }    #endregion}
Which Design Pattern Is Best Suited?
design patterns