Я думаю, что если класс будет создан только в другом классе, поэтому правильно использовать его вложенным в этот класс. Я думаю, что это поможет нам в хорошем дизайне. Когда я смотрю на свой проект, я почти никогда не видел таких вложенных structure.Но если я пытаюсь вложенных классов, поэтому на этот раз в моем сознании появятся другие вопросы. Например,Где и как использовать вложенные классы?
У меня есть класс Board, перемещайте классы, такие как ShortCastle, LongCastle, EnPassant, Promote и Pieces, такие как Pawn, Queen, Rook, Рыцарь и т. Д. Итак, ясно, что классы классов будут создавать экземпляры классов Piece, а классы Piece будут создавать классы Move. Для хорошего дизайна Promote move class должен быть вложен в Pawn, потому что только пешка может продвигать себя. Короткий и длинный замок должен быть вложен в King, потому что только король может иметь такой тип движений.
Попытка положить все классы Piece в класс Board не похожа на хороший дизайн, потому что класс 8-9 будет внутри класса Board, и это действительно будет раздражать один файл класса Board будет слишком большим и едва читаемым. Я предпочитаю, чтобы каждый класс в другом файле. Хорошо, что мы можем создать частичный класс Board, но все же это не раздражает 8-9. Файлы классов Partial Board будут содержать каждый класс штук? Не лучше ли сделать их вложенными? То же самое о Pieces Создайте еще один частичный файл Piece только для другого класса типа Move? Если вложенный класс просто занимает небольшое пространство, значит, это не проблема, но если требуется много методов?
Вы ограничиваете возможности ошибок с помощью этого дизайна. Ни один из других Pieces не может создать такой ход, даже ошибочно. Этот дизайн не позволяет это. Я ошибаюсь? – Freshblood
Глубокие классы вложенности ограничивают их область действия (что может быть полезным архитектурным ограничением в определенных сценариях), но в начале вашего проекта вы испытываете большую сложность. Я бы рекомендовал сделать «простейшую вещь, которая могла бы работать», а затем реорганизовать на более сложный дизайн, когда возникнет такая необходимость. Позже, если вы хотите ограничить создание определенных классов, вы можете разбить свое решение на разные сборки (создав проекты «Библиотека классов»). Удачи! =) –