Чистый код. Создание, анализ и рефакторинг (Мартин) - страница 273

>755             case SerialDate.SECOND_WEEK_IN_MONTH : return "Second";

>756             case SerialDate.THIRD_WEEK_IN_MONTH : return "Third";

>757             case SerialDate.FOURTH_WEEK_IN_MONTH : return "Fourth";

>758             case SerialDate.LAST_WEEK_IN_MONTH : return "Last";

>759             default :

>760                 return "SerialDate.weekInMonthToString(): invalid code.";

>761         }

>762

>763     }

>764

>765     /**

>766      * Возвращает строку, представляющую переданное значение relative.

>767      *

>768      * Необходимо поискать более элегантное решение.

>769      *

>770      * @param relative  константа, представляющая значение’relative’.

>771      *

>772      * @return строка, представляющая переданное значение ‘relative’.

>773      */

>774     public static String relativeToString(final int relative) {

>775

>776         switch (relative) {

>777             case SerialDate.PRECEDING : return "Preceding";

>778             case SerialDate.NEAREST : return "Nearest";

>779             case SerialDate.FOLLOWING : return "Following";

>780             default : return "ERROR : Relative To String";

>781         }

>782

>783     }

>784

>785     /**

>786      * Метод-фабрика, возвращающий экземпляр конкретного субкласса

>787      * {@link SerialDate}.

>788      *


Листинг Б.1 (продолжение)

>789      * @param day  день (1–31).

>790      * @param month  месяц (1–12).

>791      * @param yyyy  год (в диапазоне от 1900 до 9999).

>792      *

>793      * @return Экземпляр {@link SerialDate}.

>794      */

>795     public static SerialDate createInstance(final int day, final int month,

>796                                             final int yyyy) {

>797         return new SpreadsheetDate(day, month, yyyy);

>798     }

>799

>800     /**

>801      * Метод-фабрика, возвращающий экземпляр конкретного субкласса

>802      * {@link SerialDate}.

>803      *

>804      * @param serial  порядковый номер дня (1 января 1900 = 2).

>805      *

>806      * @return экземпляр SerialDate.

>807      */

>808     public static SerialDate createInstance(final int serial) {

>809         return new SpreadsheetDate(serial);

>810     }

>811

>812     /**

>813      * Метод-фабрика, возвращающий экземпляр субкласса SerialDate.

>814      *

>815      * @param date  объект даты Java.

>816      *

>817      * @return экземпляр SerialDate.

>818      */

>819     public static SerialDate createInstance(final java.util.Date date) {

>820

>821         final GregorianCalendar calendar = new GregorianCalendar();

>822         calendar.setTime(date);

>823         return new SpreadsheetDate(calendar.get(Calendar.DATE),

>824                                    calendar.get(Calendar.MONTH) + 1,