Это вопрос, который я всегда был, но теперь настало время, чтобы решить:Объектно-ориентированное программирование и композиция объектов, как установить свойства композиции?
Я пытаюсь реализовать состав объектов с использованием общественных атрибутов, как:
Person {
public Car car;
}
Owner {
public Person person;
public Car car;
}
Car {
public Person person;
}
Действительно, мой вопрос: Является ли хорошей практикой устанавливать, что свойства композиции являются государственными или частными?
Разница:
а) Public: делать общественности, доступ быстро и не сложно, потому что мне нужно только сослаться на свойство непосредственно с экземпляром, как:
$instancePerson.car.getNumberOfGearsGood()
проблема: свойство автомобиля доступно для изменения кем угодно из любого места.
б) Частный: делать частный, доступ, если медленно и необходимо использовать методы, чтобы получить эти свойства, как:
$instancePerson.getCar().getNumberOfGearsGood()
Когда я говорю медленно, потому что вы должны сделать метод два метода вызова, в то время как в публичном решении вам нужно только это сделать.
Я знаю, что многие разработчики и разработчики программного обеспечения предпочтут частное решение, но можете ли вы объяснить его там?
Непонятно, какой язык вы используете и что вы написали, не похоже на java или C++. Цель использования геттеров - позволить вам изменить внутреннее представление свойства без изменения вызывающих абонентов и предотвратить непреднамеренную модификацию свойства. – pvg
Язык не важен (возьмите его как пример) и да, я знаю, что вы написали, но мой вопрос о производительности более быстрый, чем Person.car, чем Person.getCar() ... obviusly ... –
Это не содержательный или ответственный вопрос без специфики и, следовательно, принципиально не конкретный вопрос программирования. На некоторых языках и во время выполнения это может иметь последствия для производительности в других, возможно, это не связано с оптимизацией. Вам нужно либо придумать более конкретный вопрос, либо, возможно, принять это к обмену стеками программного обеспечения. – pvg