Module 8 Lab - Singleton Pattern Lab

Lab: Enhancing the Report Writer Application

Objective:

In this lab, you will extend the provided Report Writer application which currently includes a Singleton class ReportHeader for generating report headers. You are to add another Singleton class for generating report footers named ReportFooter.

Instructions:

  1. Start by examining the existing ReportHeader Singleton class to understand how it is implemented.

  2. Create a new Singleton class called ReportFooter. This class should be structured similarly to the ReportHeader class.

    • It should have a private constructor.

    • It should have a private static volatile instance of ReportFooter.

    • It should have a public static method, getInstance(), that returns the instance of ReportFooter, instantiating it if it is null.

    • It should contain a private String footer that is initialized in the constructor with the contents of the footer (for example, "Company Name\nAddress\nEnd of Report\n\n").

    • It should have a printFooter() method that prints footer to the console.

  3. Update the driver class to demonstrate the use of the new ReportFooter class. After printing the header, it should retrieve the footer using ReportFooter.getInstance() and print it using the printFooter() method.

  4. Test your application to ensure that it behaves as expected.

Tips:

  • Remember that the Singleton pattern is used to ensure that a class has only one instance, and to provide a global point of access to it.

Submission:

You should submit your completed Java files for ReportHeader, ReportFooter, and Driver


Remember, the goal of this lab is to understand the Singleton pattern and how it can be used to manage global application state. Good luck!

COSC-1437 / ITSE-2457 Computer Science Dept. - Author: Dr. Kevin Roark