У меня есть следующий сценарий:PHP абстрактные классы и интерфейсы
abstract class Contractor {
// Generic contractor methods...
}
abstract class PrivatePerson extends Contractor {
// Adds methods specific to private contractors
}
abstract class Company extends Contractor {
// Adds methods specific to Company contractors
}
class CustomerPrivate extends PrivatePerson {
// Customers that are contractors, but physical persons
}
class CustomerCompany extends Company {
// Customers that are contractors, but companies
}
И то же самое происходит с поставщиками и дилерами, которые могут быть частные лица или компании. Теперь проблема заключается в следующем: как заставить объект класса CustomerPrivate и CustomerCompany быть в то же время класса Customer (который я еще не определил), а также для поставщиков и дилеров. В этом случае рекомендуется использовать интерфейсы?
interface Customer {
}
class PrivateCustomer extends PrivatePerson implements Customer {
// Customers that are physical persons, but are CUSTOMERS!
}
Спасибо за предложение!
Но как объекты класса CustomerPrivate могут быть экземплярами клиента одновременно? Как я должен определить класс Customer? – mlattari
Спасибо вам большое! Вы мне очень помогли. – mlattari
I jus попробовал с чертами, но частично решает проблему. Я могу использовать свойства и методы в чертах для объектов, но объекты не являются экземплярами черт ... С интерфейсами у меня противоположная ситуация ;-) – mlattari