СценарийОбеспечить класс реализует по крайней мере, один метод
Ни в коем случае это реально, так возьмите пример с зерном соли. Это должно быть простым способом передать сценарий. С учетом сказанного, скажем, мы имеем следующие определения классов.
interface iVehicle {
public function getDescriptionFormat1();
public function getDescriptionFormat2();
}
class VehicleDescription {
...
}
class TruckDescription extends VehicleDescription implements iVehicle {
...
}
class CarDescription extends VehicleDescription implements iVehicle {
...
}
Проблема
Классы CarDescription и TruckDescription может реализовать один или оба из описания форматов. Переопределение обоих методов в оба класса кажется неправильным, когда только один потребуется. Каков надлежащий способ реализации такого ограничения? Кроме того, вы можете попытаться продать меня на том, что это плохое дизайнерское решение.
Edit- я боюсь, что я был слишком расплывчатым с моим примером. Мои извинения. Два описания - это более или менее разные структуры данных, а не строки. Можно было бы возвращать массив, представляющий подробное описание 3 столбца в длину, а другой мог бы возвратить более основную таблицу описания с 2 столбцами
В них можно использовать черты и абстрактные методы. Таким образом, Truck будет использовать truckTrait и должен будет реализовать только свои методы, и Car будет использовать только carTrait и должен будет реализовать свои методы. Но это тоже выглядит уродливо. –
Извините, если я не был чист. Оба формата могут быть реализованы CarDescription и TruckDescription. – Kevin
Ну, тогда почему бы просто не объявить их в «VehicleDescription» пустыми телами и реализовать при необходимости? –