Принципы программирования на Java: Закон Деметры
Всем привет,
Сегодня мы рассмотрим сразу знаменитые Принципы программирования на Java.
Что такое Закон Деметры (LoD): LOD — это принцип проектирования программного обеспечения, впервые описанный Яном Холландом из Северо-восточного университета в 1987 году. Этот принцип назван в честь греческой богини урожая Деметры и также известен как « принцип наименьшего знания» или «принцип наименьшего сцепления».
Закон Деметры гласит, что объект должен общаться только со своими непосредственными соседями и должен иметь лишь ограниченное знание внутренней работы других объектов. Это помогает снизить сложность и зависимость системы, а также упрощает ее обслуживание и модификацию. Этот принцип часто применяется в объектно-ориентированных языках программирования, таких как Java, для создания более модульного и удобного в сопровождении кода.
В Java закон Деметры можно применить, ограничив количество вызовов методов, которые объект делает с другими объектами, и минимизировав количество классов, о которых объект имеет прямое знание. Этого можно достичь с помощью таких методов, как инкапсуляция, внедрение зависимостей и использование интерфейсов.
Например, рассмотрим следующий код, нарушающий Закон Деметры:
class Customer {
private BankAccount bankAccount;
private Address address;
public double getBalance() {
return bankAccount.getBalance();
}
public String getAddress() {
return address.getAddress();
}
}
Чтобы следовать закону Деметры, класс Customer можно было бы реорганизовать, чтобы использовать инкапсуляцию и предоставлять своим клиентам только необходимую информацию:
class Customer {
private BankAccount bankAccount;
private Address address;
public double getBalance() {
return bankAccount.getBalance();
}
public String getAddress() {
return address.getFormattedAddress();
}
}
class Address {
private String street;
private String city;
private String state;
private String zip;
public String getFormattedAddress() {
return street + ", " + city + ", " + state + " " + zip;
}
}
Вот несколько дополнительных соображений по применению Закона Деметры в Java:
- Минимизируйте количество методов, которые объект вызывает у других объектов: каждый вызов метода представляет собой зависимость между двумя объектами, поэтому минимизация количества вызовов может помочь уменьшить сложность системы.
- Используйте интерфейсы для разделения объектов: интерфейсы позволяют объектам взаимодействовать друг с другом, не имея прямого знания о внутренней работе друг друга. Это может помочь уменьшить зависимости между объектами и сделать систему более гибкой.
- Используйте внедрение зависимостей для управления отношениями между объектами. Внедрение зависимостей — это метод, который позволяет объектам получать свои зависимости извне, а не создавать их внутри. Это может помочь отделить объекты и сделать систему более модульной и тестируемой.
- Избегайте раскрытия деталей реализации: раскрытие деталей реализации может сильно связать объекты и затруднить изменение системы, не затрагивая другие части кода. Вместо этого рассмотрите возможность предоставления только той информации, которая необходима для использования другими объектами.
- Используйте шаблоны проектирования для управления зависимостями: шаблоны проектирования, такие как шаблон декоратора и шаблон адаптера, могут помочь отделить объекты и уменьшить количество зависимостей между ними.
- Избегайте создания ненужных отношений между объектами. Подумайте, действительно ли отношения между двумя объектами необходимы, и избегайте создания ненужных отношений.
- Используйте делегирование вместо наследования: наследование создает прочную связь между двумя классами, что может затруднить изменение одного класса, не затрагивая другой. Делегирование, с другой стороны, позволяет одному объекту делегировать задачи другому объекту, что может помочь разделить два объекта и уменьшить зависимости.
- Следуйте принципу единой ответственности. Принцип единой ответственности гласит, что у класса должна быть только одна причина для изменения. Следуя этому принципу, вы можете уменьшить количество зависимостей между объектами и сделать систему более модульной и простой в модификации.
Вот некоторые плюсы и минусы применения Закона Деметры в разработке программного обеспечения:
Плюсы:
- Снижает сложность: ограничивая количество вызовов методов и отношений между объектами, Закон Деметры может помочь уменьшить сложность системы. Это может упростить понимание и обслуживание системы.
- Повышает модульность: следуя закону Деметры, вы можете создавать более модульный код, который легче модифицировать и повторно использовать. Это может повысить гибкость и расширяемость системы.
- Улучшает тестируемость. Разделяя объекты и уменьшая зависимости между ними, вы можете сделать систему более тестируемой и проще изолировать отдельные компоненты для тестирования.
- Увеличение времени разработки: соблюдение Закона Деметры может потребовать более предварительного проектирования и планирования, что может увеличить время разработки проекта.
- Сокращение повторного использования. Ограничив отношения между объектами, вы также можете ограничить повторное использование определенных компонентов, что может затруднить повторное использование кода в других частях системы.
В целом, ключом к следованию Закону Деметры является минимизация количества зависимостей между объектами и общение только с непосредственными соседями. Это может помочь уменьшить сложность системы и упростить ее обслуживание и модификацию.
Счастливого обучения… Счастливого кодирования…..
Другие интересные статьи:
Обучение AWS: путь к безграничным возможностям в облаке.
Бесплатные способы изучения облака AWS во время праздников
Понимание _

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































