Обработка общих данных - PullRequest
1 голос
/ 13 марта 2012

Как правильно обрабатывать совместно используемые данные для разработки полнофункционального приложения, состоящего из более чем 4 классов? Я исследовал статические методы и переменные и служебные классы. Говорят, что использование статических методов затрудняет концепцию объектной ориентации. Итак, если бы кто-нибудь мог помочь мне в том, как использовать общие данные между классами, не мешая объектно-ориентированной концепции, я был бы очень признателен.

1 Ответ

1 голос
/ 13 марта 2012

Существует две основные оси «наследования» в объектно-ориентированных языках, таких как Java.Наследование «реализация» - это то, где подкласс наследует фактическую реализацию кода от родителя.Наследование «интерфейса» - это то место, где «подкласс» придерживается открытого интерфейса «родителя».

Увы, Java на самом деле немного смешивает два понятия ... Интерфейсы Java хороши и чисты -- когда вы «внедряете» интерфейс, вы указываете, что ваш класс придерживается «контракта» интерфейса, который вы указали.Наследование классов Java не так чисто - когда вы подкласс в Java, вы получаете и наследование кода, но вы также оговариваете, что ваш подкласс придерживается «контракта» интерфейса родительского класса.

Абстрактные классы в Java похожи на обычные классы Java, но с добавленным ограничением, что вы не можете создавать их экземпляры напрямую.С точки зрения этого добавленного ограничения, это в основном классы, которые на самом деле не реализуют весь код, указанный в их «контракте».

Итак, обычно считается хорошей практикой ОО указывать «контракт», который выхочу придерживаться через интерфейсы Java.Затем используйте обычное наследование Java-классов в основном для повторного использования кода.Используйте абстрактные классы Java, когда вы хотите предоставить некоторый стандартный базовый код, но хотите / должны заставить пользователя вашего класса завершить реализацию (т. Е. Вы создаете каркасную реализацию, а подклассы должны ее конкретизировать).

...