public interface DateUtils {
@Inject
Date getCurrentDate();
@Inject
Date addDays(Date date, int days);
@Inject
String format(Date date, String pattern);
}
public class DateUtilsImpl implements DateUtils {
private final Logger logger;
private final SimpleDateFormat dateFormatter;
@Inject
public DateUtilsImpl(Logger logger, SimpleDateFormat dateFormatter) {
this.logger = logger;
this.dateFormatter = dateFormatter;
}
public Date getCurrentDate() {
logger.info("Getting current date");
return new Date();
}
public Date addDays(Date date, int days) {
logger.info("Adding {} days to date", days);
// Perform date addition logic
}
public String format(Date date, String pattern) {
logger.info("Formatting date");
// Perform date formatting logic
}
}
public class Main {
public static void main(String[] args) {
Injector injector = Parfait.createInjector();
DateUtils dateUtils = injector.getInstance(DateUtils.class);
Date currentDate = dateUtils.getCurrentDate();
System.out.println("Current date: " + currentDate);
Date newDate = dateUtils.addDays(currentDate, 5);
System.out.println("New date: " + newDate);
String formattedDate = dateUtils.format(newDate, "yyyy-MM-dd");
System.out.println("Formatted date: " + formattedDate);
}
}