Трудно дать действительно общий совет, поскольку существует так много разных приложений Java в разных доменах. Тем не менее, одна настоятельно рекомендуемая книга - это Domain Driven Design Эрика Эванса. См. Также Википедию , где есть краткое введение.
Общий совет:
Добро пожаловать на stack overflow. Если вы хорошо разбираетесь в Java, прочитайте Head First Design Patterns. и Head First Object-Oriented analysis and design - эээ, можно в обратном порядке :)
Не начинайте кодирование сразу, не имея дизайна. Но это не значит, что вы должны все спроектировать, прежде чем писать код. Потому что, судя по моему предыдущему опыту, у меня не могло быть дизайна, который не нуждался бы в исправлениях. Особенно, если вы новичок в языке программирования, ваш дизайн будет меняться в соответствии с особенностями языка, который вы используете, и доступными библиотеками. Мой совет - иметь общий дизайн, основанный на наиболее важных аспектах объектно-ориентированного дизайна, таких как наследование, полиморфизм, инкапсуляция и т. Д. Исходя из этого общего дизайна и потребностей, с которыми вы сталкиваетесь при программировании, соответствующим образом пересмотрите свой дизайн.
По мере того, как вы приобретаете опыт в языке, ваш первый общий дизайн будет гораздо более эффективным образом вписываться в вашу программу.
Хотя большинство людей говорят, что один объектно-ориентированный дизайн должен быть написан на любом объектно-ориентированном языке, не так-то просто создать такой очень хороший общий дизайн. Чтобы быть более реалистичным, игнорирование языка, который используется для реализации конкретного дизайна, для меня не лучший способ.
На мой взгляд, все сводится к следующему:
Для достижения вышеуказанного существуют определенные рекомендации и принципы, которые предлагаются экспертами на основе опыта, которые
Эти рекомендации и принципы не зависят от какой-либо парадигмы программирования или язык. Однако языки ООП помогают их легче реализовать.
Скорее всего, то, что вы будете делать, уже было сделано раньше - по крайней мере, что-то похожее. К счастью, в наши дни существует множество материалов с открытым исходным кодом. Так что если у вас нет никаких идей, вы можете скачать несколько приложений с открытым исходным кодом, которые делают то же самое, и изучить их. Это даст вам хорошее начало.
Существуют различные парадигмы (очень часто трехбуквенные сокращения):
С помощью этих ключевых слов вы найдете много информации в Интернете.
В J2EE я бы сказал, что SDD является наиболее используемым (сейчас он очень «нормализован», даже если я не уверен, что это лучшее решение): service (программный «интеллект»)> домен (bean объекты, используемые для сохранения)> DAO (постоянство).
Теперь DDD становится все более и более используемым: концепция перефокусирована на предметных объектах, которые берут на себя уровень «программного интеллекта».
Начните с изучения диаграмм классов UML, это поможет двигаться в правильном направлении, а затем посмотрите на паттерны проектирования Gang of Four. Это отличный первый шаг.
http://en.wikipedia.org/wiki/Class_diagram
http://en.wikipedia.org/wiki/Design_Patterns
И наконец, я бы полистал хороший открытый код, например, Spring Framework
Я бы порекомендовал эмерджентный дизайн с TDD.
Я думаю, что в Java-дизайне нет ничего особенного: если вы уже знаете об объектном дизайне, вы готовы к работе!