Вот один, который я должен был сделать некоторое время назад.На собеседовании меня попросили запрограммировать колоду карт, где их можно перетасовать.Действительно простая проблема.Я создал:
Card:
suit
rank
Deck:
card[]
Я думаю, что отличительным фактором было то, что всегда может быть только 52 карты.Поэтому я сделал конструктор для Card () закрытым и вместо этого создал статическую фабричную стоимость (масти, ранга). Это позволило мне кэшировать 52 карты и сделать их неизменяемыми.Он преподал много важных базовых уроков в этих книгах.
- неизменяемый
- контролирует создание объекта
- статические методы
- , возможно, создает подкласс и возвращает карту из другого источника.(Я этого не делал)
Это похоже на Boolean и Byte, за исключением того, что я использовал общий пример домашней работы, чтобы показать, почему важно контролировать экземпляры.Я также создал вспомогательную функцию для deck под названием newDeck (), потому что я хотел показать экземпляр, в котором конструктору может не потребоваться быть закрытым, но было бы неплохо иметь вспомогательную статическую фабрику.
Надеюсьпомогает!